<tt><font size=2>When I tried to import tzdata2013g into our project,
I realized 2013g Morocco rule change revealed our tooling problem.</font></tt>
<br>
<br><tt><font size=2>Our tool tries to extract a set of rules to be applied
beyond year 2038, and expecting either no &quot;max&quot; rule or a pair
of &quot;max&quot; rules. However, Africa/Casablanca with 2013g update
introduced a case not fall into above - only a single &quot;max&quot; rule.</font></tt>
<br>
<br><tt><font size=2>Of course, tzcode works fine and it's our tooling
issue. My problem is how we should interpret the rule.</font></tt>
<br>
<br><tt><font size=2>Below is a part of Morocco rules:</font></tt>
<br>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2013 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Jul
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;7 &nbsp; &nbsp; &nbsp; &nbsp;
3:00 &nbsp; &nbsp; &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp;-</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2013 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Aug
&nbsp; &nbsp; &nbsp; &nbsp; 10 &nbsp; &nbsp; &nbsp; &nbsp;
2:00 &nbsp; &nbsp; &nbsp; &nbsp;1:00 &nbsp; &nbsp; &nbsp; &nbsp;S</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2013 &nbsp; &nbsp; &nbsp; &nbsp;2035
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Oct
&nbsp; &nbsp; &nbsp; &nbsp; lastSun 3:00 &nbsp; &nbsp; &nbsp; &nbsp;0
&nbsp; &nbsp; &nbsp; &nbsp;-</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2014 &nbsp; &nbsp; &nbsp; &nbsp;2022
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Mar
&nbsp; &nbsp; &nbsp; &nbsp; lastSun 2:00 &nbsp; &nbsp; &nbsp; &nbsp;1:00
&nbsp; &nbsp; &nbsp; &nbsp;S</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2014 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Jun
&nbsp; &nbsp; &nbsp; &nbsp; 29 &nbsp; &nbsp; &nbsp; &nbsp;
3:00 &nbsp; &nbsp; &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp;-</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2014 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Jul
&nbsp; &nbsp; &nbsp; &nbsp; 29 &nbsp; &nbsp; &nbsp; &nbsp;
2:00 &nbsp; &nbsp; &nbsp; &nbsp;1:00 &nbsp; &nbsp; &nbsp; &nbsp;S</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2015 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Jun
&nbsp; &nbsp; &nbsp; &nbsp; 18 &nbsp; &nbsp; &nbsp; &nbsp;
3:00 &nbsp; &nbsp; &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp;-</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2015 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Jul
&nbsp; &nbsp; &nbsp; &nbsp; 18 &nbsp; &nbsp; &nbsp; &nbsp;
2:00 &nbsp; &nbsp; &nbsp; &nbsp;1:00 &nbsp; &nbsp; &nbsp; &nbsp;S</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2016 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Jun
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;7 &nbsp; &nbsp; &nbsp; &nbsp;
3:00 &nbsp; &nbsp; &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp;-</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2016 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Jul
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;7 &nbsp; &nbsp; &nbsp; &nbsp;
2:00 &nbsp; &nbsp; &nbsp; &nbsp;1:00 &nbsp; &nbsp; &nbsp; &nbsp;S</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2017 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;May
&nbsp; &nbsp; &nbsp; &nbsp; 27 &nbsp; &nbsp; &nbsp; &nbsp;
3:00 &nbsp; &nbsp; &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp;-</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2017 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Jun
&nbsp; &nbsp; &nbsp; &nbsp; 26 &nbsp; &nbsp; &nbsp; &nbsp;
2:00 &nbsp; &nbsp; &nbsp; &nbsp;1:00 &nbsp; &nbsp; &nbsp; &nbsp;S</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2018 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;May
&nbsp; &nbsp; &nbsp; &nbsp; 16 &nbsp; &nbsp; &nbsp; &nbsp;
3:00 &nbsp; &nbsp; &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp;-</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2018 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Jun
&nbsp; &nbsp; &nbsp; &nbsp; 15 &nbsp; &nbsp; &nbsp; &nbsp;
2:00 &nbsp; &nbsp; &nbsp; &nbsp;1:00 &nbsp; &nbsp; &nbsp; &nbsp;S</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2019 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;May
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;6 &nbsp; &nbsp; &nbsp; &nbsp;
3:00 &nbsp; &nbsp; &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp;-</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2019 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Jun
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;5 &nbsp; &nbsp; &nbsp; &nbsp;
2:00 &nbsp; &nbsp; &nbsp; &nbsp;1:00 &nbsp; &nbsp; &nbsp; &nbsp;S</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2020 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Apr
&nbsp; &nbsp; &nbsp; &nbsp; 24 &nbsp; &nbsp; &nbsp; &nbsp;
3:00 &nbsp; &nbsp; &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp;-</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2020 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;May
&nbsp; &nbsp; &nbsp; &nbsp; 24 &nbsp; &nbsp; &nbsp; &nbsp;
2:00 &nbsp; &nbsp; &nbsp; &nbsp;1:00 &nbsp; &nbsp; &nbsp; &nbsp;S</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2021 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Apr
&nbsp; &nbsp; &nbsp; &nbsp; 13 &nbsp; &nbsp; &nbsp; &nbsp;
3:00 &nbsp; &nbsp; &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp;-</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2021 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;May
&nbsp; &nbsp; &nbsp; &nbsp; 13 &nbsp; &nbsp; &nbsp; &nbsp;
2:00 &nbsp; &nbsp; &nbsp; &nbsp;1:00 &nbsp; &nbsp; &nbsp; &nbsp;S</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2022 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Apr
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3 &nbsp; &nbsp; &nbsp; &nbsp;
3:00 &nbsp; &nbsp; &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp;-</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2022 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;May
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3 &nbsp; &nbsp; &nbsp; &nbsp;
2:00 &nbsp; &nbsp; &nbsp; &nbsp;1:00 &nbsp; &nbsp; &nbsp; &nbsp;S</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2023 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Apr
&nbsp; &nbsp; &nbsp; &nbsp; 22 &nbsp; &nbsp; &nbsp; &nbsp;
2:00 &nbsp; &nbsp; &nbsp; &nbsp;1:00 &nbsp; &nbsp; &nbsp; &nbsp;S</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2024 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Apr
&nbsp; &nbsp; &nbsp; &nbsp; 10 &nbsp; &nbsp; &nbsp; &nbsp;
2:00 &nbsp; &nbsp; &nbsp; &nbsp;1:00 &nbsp; &nbsp; &nbsp; &nbsp;S</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2025 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Mar
&nbsp; &nbsp; &nbsp; &nbsp; 31 &nbsp; &nbsp; &nbsp; &nbsp;
2:00 &nbsp; &nbsp; &nbsp; &nbsp;1:00 &nbsp; &nbsp; &nbsp; &nbsp;S</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2026 &nbsp; &nbsp; &nbsp; &nbsp;max
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Mar
&nbsp; &nbsp; &nbsp; &nbsp; lastSun 2:00 &nbsp; &nbsp; &nbsp; &nbsp;1:00
&nbsp; &nbsp; &nbsp; &nbsp;S</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2036 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Oct
&nbsp; &nbsp; &nbsp; &nbsp; 21 &nbsp; &nbsp; &nbsp; &nbsp;
3:00 &nbsp; &nbsp; &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp;-</font></tt>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2037 &nbsp; &nbsp; &nbsp; &nbsp;only
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Oct
&nbsp; &nbsp; &nbsp; &nbsp; 11 &nbsp; &nbsp; &nbsp; &nbsp;
3:00 &nbsp; &nbsp; &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp;-</font></tt>
<br>
<br>
<br><tt><font size=2>If I read above, the rule applicable 2038 and beyond
is only </font></tt>
<br>
<br><tt><font size=2>&gt; Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco
&nbsp; &nbsp; &nbsp; &nbsp;2026 &nbsp; &nbsp; &nbsp; &nbsp;max
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Mar
&nbsp; &nbsp; &nbsp; &nbsp; lastSun 2:00 &nbsp; &nbsp; &nbsp; &nbsp;1:00
&nbsp; &nbsp; &nbsp; &nbsp;S</font></tt>
<br>
<br><tt><font size=2>Therefore, if I read this as is, Africa/Casablanca
will be permanent daylight saving time after 2038-03-28.</font></tt>
<br>
<br><tt><font size=2>I know the tz database is trying to cover dates up
to 2037 (max signed integer seconds). Also, rules used in far future are
not really useful. But users like us really need to make a certain assumption
for far future dates.</font></tt>
<br>
<br><tt><font size=2>I'm actually not 100% sure if we can still use the
tz database for year 2038 and beyond, or if the tz database has no support
/ desire for make it work beyond 2038. My comments below is based on the
assumption that the tz database just set 2038 as the threshold for rule
coverage, but not trying to introduce the hard barrier.</font></tt>
<br>
<br><tt><font size=2>One thing I'm not comfortable is that the rules above
will result permanent daylight saving time. If the max line rule were written
like below -</font></tt>
<br>
<br><tt><font size=2>Rule &nbsp; &nbsp; &nbsp; &nbsp;Morocco &nbsp;
&nbsp; &nbsp; &nbsp;2026 &nbsp; &nbsp; &nbsp; &nbsp;2037
&nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Mar
&nbsp; &nbsp; &nbsp; &nbsp; lastSun 2:00 &nbsp; &nbsp; &nbsp; &nbsp;1:00
&nbsp; &nbsp; &nbsp; &nbsp;S</font></tt>
<br>
<br><tt><font size=2>it makes better sense to me. The rule above indicates
the last transition is on 2037-10-11, then it will stay in standard time
beyond 2038. This is perfectly equivalent to what 2013g defined until 2038.
Only the difference is 2038-03-28 (out of signed 32bit integer seconds)
and beyond.</font></tt>
<br>
<br><tt><font size=2>I would like to ask the tz database coordinators to
select rule line more friendly for users using the database for 2038 and
beyond.</font></tt>
<br>
<br><tt><font size=2>Thanks,</font></tt>
<br><tt><font size=2>Yoshito</font></tt>
<br>