<div dir="ltr">Hi Paul,<div><div>Here are the last transitions in Africa/Casablanca output (rearguard format):</div><div><br></div><div>transition,type,[UTC time],[Type offset],[Type isDST]<br></div><div>3672612000,1,2086-05-19T02:00:00Z,PT1H,DST<br>3699828000,2,2087-03-30T02:00:00Z,PT0S,STD<br>3703456800,3,2087-05-11T02:00:00Z,PT1H,STD<br></div><div><br></div><div>So change is from standard to standard, even though offset changes from 0h to 1h. Is that expected behaviour?</div><div><br></div><div>As Africa/El_Aaiun is using Morocco rules, its transitions are also affected.</div><div>This affects 64-bit section only, 32-bit section looks fine to me.</div><div><br></div><div>Thanks,</div><div>Almaz</div><div><br></div><div><br></div><div>Data above is output of debug tools used in Android. The way I've built data an byte manipulations if needed:</div><div><br></div><div>mkdir /tmp/zic<br>cd /tmp/zic<br>git clone <a href="https://github.com/eggert/tz.git" target="_blank">https://github.com/eggert/tz.git</a> .<br>make -C . zic<br>make -C . NDATA= rearguard.zi<br>mkdir data<br>./zic -b fat -d ./data rearguard.zi<br></div><div><br></div><div>byte manipulations:</div><div>Let's skip 32-bit header:</div><div>xxd -seek 20 -c 4 -l 24 data/Africa/Casablanca<br>typecnt: 94<br>timecnt: 5<br>charcnt: 12<br><br>32-bit block size = 94 * 4 + 94 + 5 * 6 + 12 = 512<br>64-bit start = 44 + 512 = 556<br><br>64-bit header:<br>xxd -seek 576 -c 4 -l 24 data/Africa/Casablanca:<br>timecnt: 196<br>typecnt: 4      <- 32-bit section has 5 <br>charcnt: 12<br><br>transition types offset: 556 + 44 + 196 * 8  = 2168<br><br>xxd -seek 2168 -c 1 -l 196 data/Africa/Casablanca<br>...<br>00000934: 02  .<br>00000935: 01  .<br>00000936: 02  .<br>00000937: 01  .<br>00000938: 02  .<br>00000939: 01  .<br>0000093a: 02  . <br>0000093b: 03  . <- the last transition<br><br>local time records offset = 556 + 44 + 196 * 9 = 2364<br><br>xxd -seek 2364 -c 6 -l 24 data/Africa/Casablanca<br>0000093c: ffff f8e4 0000  ......<br>00000942: 0000 0e10 0104  ......<br>00000948: 0000 0000 0008  ...... <- standard time<br>0000094e: 0000 0e10 0004  ...... <- also standard time<br></div><div><br></div></div></div>