* NEWS: Mention this.
* zic.c (outzone): Omit an incorrect use of ‘useuntil’.
This fixes a bug in 2023-10-15’s “Fix zic bug with Palestine after
2075” (commit 35c116b7536a36c43eb7cd36bff71ad0c5ecf071), which
caused zic to mess up if the last transition is to a new time type.
This patch does not affect any TZif files generated by current tzdata.
This artificial input illustrates the bug:
Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D
Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
Zone America/Vancouver -8:00 - PST 2026 Mar 9
-8:00 Canada P%sT 2026 Nov 1 02:00
-7:00 - MST
Without the fix, zic generates a nonconforming TZif file that omits
the last transition even though the trailing TZ string is "MST7".
---
NEWS | 7 +++++++
zic.c | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/NEWS b/NEWS
index 267e62da..d7bf5a3c 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,9 @@ News for the tz database
Unreleased, experimental changes
+ Briefly:
+ British Columbia moves to permanent -07 on 2026-03-09.
+
Changes to future timestamps
British Columbia's 2026-03-08 spring forward will be its last
@@ -12,6 +15,10 @@ Unreleased, experimental changes
a limitation in CLDR v48.1 (2026-01-08). This temporary hack is
planned to be removed after CLDR is fixed.
+ Changes to code
+
+ zic no longer mishandles a last transition to a new time type.
+
Release 2026a - 2026-03-01 22:59:49 -0800
diff --git a/zic.c b/zic.c
index c10be426..225ad419 100644
--- a/zic.c
+++ b/zic.c
@@ -3522,7 +3522,7 @@ outzone(const struct zone *zpfirst, ptrdiff_t zonecount)
startttisut);
if (usestart) {
addtt(starttime, type);
- if (useuntil && nonTZlimtime < starttime) {
+ if (nonTZlimtime < starttime) {
nonTZlimtime = starttime;
nonTZlimtype = type;
}
--
2.51.0