The attached change (which also appears in tab-mangled form below) dealt with the problem on the system I'm using. It arranges things so that when the step-by-half-a-day time value goes over the maximum cutoff time, a final transition test is made.
(This seems better than excusing the behavior based on zdump.8's language about cutoffs being "near the starts of the years.")
@dashdashado
1.1
927 lines
1.2
927 lines
*** /tmp/,azdump.c 2014-09-06 19:56:41.335772400 -0400
--- /tmp/,bzdump.c 2014-09-06 19:56:41.423777400 -0400
***************
*** 654,665 ****
tmp = my_localtime_rz(tz, &t, &tm);
if (tmp)
ab = saveabbr(&abbrev, &abbrevsize, &tm);
! for ( ; ; ) {
newt = (t < absolute_max_time - SECSPERDAY / 2
? t + SECSPERDAY / 2
: absolute_max_time);
if (cuthitime <= newt)
! break;
newtmp = localtime_rz(tz, &newt, &newtm);
if ((tmp == NULL || newtmp == NULL) ? (tmp != newtmp) :
(delta(&newtm, &tm) != (newt - t) ||
--- 654,665 ----
tmp = my_localtime_rz(tz, &t, &tm);
if (tmp)
ab = saveabbr(&abbrev, &abbrevsize, &tm);
! while (t < cuthitime) {
newt = (t < absolute_max_time - SECSPERDAY / 2
? t + SECSPERDAY / 2
: absolute_max_time);
if (cuthitime <= newt)
! newt = cuthitime;
newtmp = localtime_rz(tz, &newt, &newtm);
if ((tmp == NULL || newtmp == NULL) ? (tmp != newtmp) :
(delta(&newtm, &tm) != (newt - t) ||