Please do not fetch this Web page (or others of mine) by automated
subscription; that wastes my resources. Because of this abuse, I may
sometimes change the name or offer only
critdate.zip.

Copying

I do not permit the wording of this list of dates to be copied on the
Net or elsewhere, either in whole or on part, except for "fair comment"
extracts; but the dates and the facts are naturally public. By breaching
my copyright, you implicitly agree to
termination of your account.

I do not permit this Web page to be copied, except in these cases :-
(i) as described in my
Merlyn Home Page page,
(ii) temporarily by agreement, for citation in print or
equivalent (to reduce load on
my own page
at Demon),
(iii) by normal transparent proxying/cacheing which
serves a complete and substantially current version
without any modifications overt or concealed,
(iv) for personal private reference.

I may agree to limited copying within organisations. All copies must
be headed with a proper attribution, must cite it as
<URL:http://www.merlyn.demon.co.uk/critdate.htm>,
and must give the date made.

The major criticalities are, sequentially,
the August 1999 GPS rollover,
the Year 2000
and all its two-digit rollover consequences,
the Leapness of 2000 (including Day 366),
and the 32-bit UNIX (and C library) Year 2038 problem;
and also the various dates relating to introduction of the
Euro currency.

This is, fundamentally, a list of Critical and Significant Dates,
which is not quite the same thing as a list of dates which
ought to be used in testing; for example, 2000-02-29 was critical as
possibly unexpected, but in testing one should also try 2000-02-28,
2000-02-30, 2000-02-31, 2000-03-00 & 2000-03-01, in order to make
sure that the valid dates are consecutive and without overlap (Note 19); likewise for 2000-366. Some of the dates are
those resulting from other date failures.

Some are important; some are possibly just amusing - it is up to
you to discriminate.

This List is not a prediction of disaster; it is an indication of
when error may be prevented by sufficient care.

Software errors may have been fixed in later versions.

The Gregorian calendar, with Historical year numbering, is to be
assumed where necessary (some dates are UNCHECKED - you MUST verify -
they may be a day or two out). However, many of the critical dates would
be the same dates (which currently occur thirteen days later) in a
consistently Julian environment. Note that, in computing, conventional
day-numbers preceding 1900-03-01 and day-counts spanning 1900-02-28 to
1900-03-01 might be a day out, if a day in between those dates was
assumed.

The more Critical Dates may have been chosen as trigger dates by
virus writers - 2000-01-01, 2000-02-29, 2001.02.29, etc. - and may
emulate date errors.

Some dates of non-computer origin are included. Historical dates are
mainly limited to those of significance to UK history and culture.

Some of these are local date/times; some are GMT/UTC or similar. I use GMT for legal GMT,
with date changing at London mean solar midnight; the term UT might be
confused with UTC.

It is very important to remember that the local
time corresponding to a given GMT depends on the local
Time Zone,
and on Daylight saving; also that the time in question will be the time
that the system is actually set to, not what it should be set to.

For example, a DOS/Windows PC will with high probability be set to
local time internally, but a UNIX computer should be on GMT/UTC
internally. DOS software translated from UNIX may default to California
time settings.

0000 -- -- --- - Year number did
not occur, except for Astronomers; like 4 AD, it was not Leap ;
defective software may erroneously return some form like
0000-00-00, 0000-01-01, 0001-00-00, 0001-01-00, etc.

0000/01/01 Thu - (Astronomical Proleptic Julian)

0000-01-01 Sat - (Astronomical Proleptic Gregorian)

0000 02 29 --- - (Civil) did not occur; as AD 0004

0000/03/01 Wed - My preferred
(Astronomical Proleptic Gregorian)
Day Zero for calculation (except when I prefer to use CMJD).

0622/07/15 Thu - (Julian) Sunset : First Moment of
First Day of the Islamic Calendar

0622/07/16 Fri - (Julian) First Day of the Islamic Calendar,
MuHarram 1, 1 A.H.
Beginning of the year (month?) of the Hejira on the existing calendar.
Some Islamic authorities say a day earlier.
Note 21.2?

1999-04-20 Tue - 255 days to year 2000.
A byte holds values 0..255.
The more significant byte of a word "days till 2000" becomes empty;
programming slips may now show

1999-05-24 Mon - See 1999-05-31

1999-05-31 Mon -
UK Spring Bank Holiday and US Memorial Day, last Monday in May.
A version of MS Outlook uses the fourth Monday in May, and so is
a week early some years.
Affects other MS applications?

1999-08-21 Sat -
End of GPS Week 1023 (from 1980-01-06), 10-bit field "EOW" rollover
(nominally at 0000h the next day; but, because of
Leap Seconds,
actually at 1999-08-21 23:59:47 UTC).
USNO,
gpsinformation.net.
It seems that most receivers are OK; some may lose lock for a few
minutes at rollover; a few may not lock in Week #0 (mod 1024)

1999-08-22 Sun - See yesterday, if East of the Atlantic

1999-08-23 Mon - See 1999-08-30

1999-08-30 Mon -
UK Late Summer Holiday, last Monday in August.
A version of MS Outlook uses the fourth Monday in August, and so is
a week early some years.
Affects other MS applications?

1999-09-01 Wed - Start of FY for TX in USA

1999-09-09 Thu - Default "nonsense" or "marker" date in
many data-entry screens - 9-9-99 may have been used as an indefinite
"Purge" date - purge file overflow?
See Randall Bart?
Subsequently, data may be unprotected

2000-02-29 Tue -
This valid date is not expected to
occur by everyone; some major software is or has been wrong here.
One reason is missing the 400-year rule;
another is using full rules on a YY date. Check that March 1st is next.
Examples : RFC2030 is wrong; JTIDS (Mil; Link 16) tables
were said by doncio
to err (fixed?);
Excel 2000 (pdf);
IBM VM/ESA 2.3 needs an APAR [PTF#UM29184]); SCO UNIX 3.3?
I've seen it said that Motorola CPU RTCs use 4+100 rules, so omit
this day; so far, I remain unconvinced

2000-02-29 Tue - It has been said that un-upgraded HP 300
Basic entered dates fail after today.

2000-02-29 Tue - It has been said that some PDP-11
computers will not boot after this date - a diagnostics bug. But Mentec
did not refer to this; and another expert (RHS of PA) says that it is
just that the 11/93 & 11/94 consoles get the Leap Year rule wrong

2000-02-29 Tue - For this day, Her Majesty should NOT
have been
sending any of her traditional messages (were telegrams) to centenarians.

2000-04-05 Wed - End of United Kingdom FY 1999-2000,
which was a Leap Year

2000-04-06 Thu - Start of United Kingdom FY 2000-2001

2000-04-06 Thu -
Introduction of different taxation in Scotland?

2000-04-09 Sun - The hundredth day of the year
(cf. 1999-04-09). Note 2

2000-04-15 Sat -
USA taxpayer panic day (W2 forms are due back to govt)

2000-04-15 Sat - Systems thinking that it is now 1900
will think that today is Easter Sunday

2000-04-22 Sat - "PhTWOday" (Easter Saturday) -
"The Big Number" - national dual running ends (see 1999-06-01).
Several UK areas have had phone number changes.
London (0)1#1 xxx xxxx numbers (# in [7,8])
have become (0)20 #xxx xxxx.
The change from 7-digits to 8 digits for local London numbers is
on this day.
See also Clive Feather
for phone info.
Oftel is now Ofcom

2000-12-30 Sat - Allowing for the errors of the Julian
Calendar, the Third Millennium of our era, when the Sun has returned
to its starting point with respect to the Earth for the 2000th time,
starts at around 03:00:00 today

2003-08-28 Thu - Or thereabouts - first difference caused
by new Saudi rules for Islamic month-length, from AH 1423.
JAS

2003-11-28 Fri - At about GMT 00:00 or 24:00
(reports are unclear), GPS 8-bit week rollover since last
Leap Second at 1998-12-31 23:59:60 Thu; a
bug in Motorola Encore receivers gets 29th for a second of the 28th.
Risks Digest 22.94/3 refers

2007-12-31 Mon - Also 2003-12-29, 2019-12-30, and every 28
years after in c.21 : Some VBScript DatePart give wrong ISO
Week Number - see in VBScript Date and Time
2. Error seen both in Web pages and in WSH; still present in Vista

2038-01-01 Fri - From HP-UX 11.00 'at' manpage:
'at' will not schedule jobs beyond the year 2037.
That's local time

2038-01-01 Fri - Apple Rhapsody OS
was said to fail. I can no longer locate this date at Apple;
I think it should be as next.

2038-01-19 Tue -
32-bit UNIX/POSIX : 2^31 seconds from 1970-01-01, time_t
MSB sets @03:14:08 GMT, and signed
time_t<0 or time_t=-1
(the latter may be right; but the former may be used)
is an error marker - "C" libraries: Note 4;
Porquet page;
Year 2000 Programming. See 1901-12-13.
"Version 3.1 of InterSystems' Cache (www.intersys.com) crashes
on January 19, 2038. Related to C calendar library problem
A fix is reportedly in the works."

2038-04-23 Fri - CMJD 2^16

2038-04-25 Sun - Easter Sunday is
as late as possible this year (previous, this day in 1943)

2060-??-?? ??? - Around now, present-type TLEs for artificial
satellites may become ambiguous, as they use 2-digit years (YYDDD)

2060-01-01 Thu - The trick of using a two-digit year
representation with the first digit Hex (98,99,A0,A1..F9) fails today
If the digits are stored as nibbles, no more can be done;
if as characters, 200 more years brings the end of Z9

2080-01-01 Mon - MS-DOS file dates, when displayed with
two-digit years, are ambiguous if files may be dated today or later.
Windows File Manager, set to
ISO 8601 dates, drops 100 years
from displayed file dates of 2080+. My Amstrad PPC640, bought in 1988,
evidently cleverly windows YY into 1980-2079; so will now err on boot

2100-01-01 Fri - Y2.1K
- will they never learn?
Most current PC BIOS run out of dates.
MS-DOS DIR renders filedate years 2100-2107 as 99.
Ada: package Ada.Calendar defines years
as being in the range 1901..2099.
Many short-term Y2k fixes fail

2100.02.29 --- - Next non-existent February 29 in a
year divisible by 4 ; first failure of plain "4-year" rule since 1900
(except for Greek Orthodox outside Greece,
using Julian; and for the usual PC RTC);
End of 200 years of 28-year calendar repeat.
Start of 100 years thereof

4000-02-29 Tue - Will occur, on the Gregorian calendar.
I believe that 4000 was not going to be Leap in the USSR, and
proposed not in Revolutionary France.
The Greek Orthodox will agree with that, for different reasons

4047-01-01 Tue - As 2147, but for 1900-biased YYYY

4082-12-31 Thu - Last valid date according to a Y2k Glossary
(first seen at NIST?);
1582+2500 & Gregorian Calendar error is about 1 day in 2500 years !!

To determine CMJD and/or Day-of-Week,
see "mjd_date", "bat_date", "nowminus", and "dateprox" in my
programs directory; "longcalc", which works
in wide-range exact integer seconds, can be used for dates after
Y32k; see also Zeller. For a JavaScript
calendar, JavaScript Calendars and Clocks.

"These are machines built by
Apollo Computer, running the DomainOS operating system (DomainOS is
Not Unix, BTW).
The fail date is 14:59 GMT November 2, 1997. At that time,
the highest bit of the 32-bit system clock value will go to '1'.
Some functions may treat this a signed integer, and will give erroneous
values if they use subtraction to calculate elapsed time."
http://www.mitre.org/research/cots/APOLLO_PROBLEM.html
http://www.mitre.org/tech/y2k/docs/DATES.html
http://www.InterWorks.org/Tech/apollonov2/
Thread "Hp's Computers" in news:comp.software.year-2000, Oct'97.
E-mail 2001-04-19 - these are really Apollo machines, from before
the HP takeover in 1998. Good patch info from
Jim Rees;
1997-11-02 14:59 is an erroneous 31-bit rollover;
the genuine 32-bit one is at 2015-09-05 05:58.

This set is largely derived from
Randall Bart :-
Erroneous date-form is longer than ever before - field overflow
is possible - null-terminated strings may lose termination.
Date-form occurs when (Year-1900) is printed with %d, %2d or
equivalent, and Year>1999; the "19" may be implicit or explicit;
leading zero may be truncated.
Date strings are here in UK D/M/Y order, or Ordinal Date Y-D.
Note 3.

And non-UNIX 32-bit or compatible C/C++
libraries, etc., which means that the bug can appear in, for example,
DOS programs; I may have found it in ZIP.EXE, from ZIP22X.EXE,
from Info-Zip via FTP sites.
It's been reported in Microsoft MFC CTime class. It's been seen in
control software. It's alleged in Word Perfect 6.1 (for ?).
In UNIX, 03:14:08 is GMT/UTC; in DOS/Win3/Win9x, it's local time.

Graham E. Kinns wrote (Jul 98) : SNews
has a severe 9th Sep 2001 problem when the decimal representation of time_t
rolls from 9 to 10 digits, breaking the fixed format of the .idx files :(
I believe the same applies to NewsWin.
Richard Clayton wrote in article
<+ypcqNIrBmY4EAt2@turnpike.com> of Thu, 23 Dec 1999 17:48:27 in
news:demon.ip.support.pc that the new SNews 1.31 fixes this.

Philip Guenther (mail, Apr 2001) reports that
"maildir" mail format
usually includes the time_t value in decimal at the start of the filename,
and that this is often used for sorting;
mis-sorts expected from Sep 9.

"Both localtime() & time()
are Perl equivalents of the corresponding C functions and use them
internally. But what most Perl programmers probably do not know is
that time(3c) will return (( time_t )-1) if it fails for any reason,
so localtime(-1) will happily return a formatted date string for
'Wednesday December 31, 1969'."
Risks Digest 19.88/7.

1999-09-06 : Updated, esp. Sco, from 1999-2000 IoP diary.
W/h: Working day, though half-holiday for many.
"Holidays aren't uniform over Scotland - different places have
different odd days here and there, but over the new year period they are
relatively standard".
* "In the USA, banks and exchanges will open
Dec 23 and 27, but either may be a state or local holiday in some locales.
Some companies will be closed." URL?
* See also
Annual Holiday Dates.

I hear that in Motorola's VERSAdos
Multi-tasking Operating System (UNIX
look-alike), at 31 December 2043, the system clock rolls-over to 1 January
1980, because the 'Telefile' Time/Date 4 byte (32 bit) format is used,
where the MSB 6 bits are used for years from 1980
(i.e. 1980 + 0 - 63 years
expires at 2043). (Telefile format : y6 m4 d5 h5 m6 s6)

This probably obscure operating system is still used by a 1980's
developed SCADA system from Leeds & Northrup (Australia) Pty Ltd of
Sydney (now Foxboro-LN Pty Ltd of Sydney), their LN2068 SCADA System (or
LN700 in USA). It is the current SCADA system used by a number of power
utilities in Australia and New Zealand, Asia and USA.

Note that it will be Shabbat
from before dusk 1999-12-31 to after dusk 2000-01-01.
One should not expect observant Jews to want to participate
either in program remediation or in Gentile celebration during that
period (they're probably unenthusiastic about the whole affair, anyway).
Also, they should consider reading 2000-04-30 above as 2000-03-31.

The predicted Sunspot
count peak was essentially flat over several months.
Radio noise may affect communications.
Geomagnetic storms may affect the National Grid.
Solar flares peak probably within 2000..2002.
Monash, 1997-04-10?
: "If current projections are correct, the sunspot maximum is currently
estimated to peak in March of the year 2000. It must be noted, however,
that predicting the month of maximum is even less certain than the
sunspot number. The actual month of sunspot maximum could be as early
as January 1999 or as late as June, 2001."
Harjit
S. Ahluwalia, for 1998-04-03 : Abstract : The Planetary Index Ap,
Ohl's Conjecture and the Predicted Size of Solar Cycle 23.

I have seen a report
that : Digital Unix had a bug where a
timespec value (seconds and nanoseconds) was being checked to make sure
the nanoseconds field wasn't more than 1 billion; instead, it was checking
the seconds field, and as we hit the (Unix epoch) 1 billion second mark
in 2001, the check would erroneously indicate it was invalid.
(On the "documentation CD-ROM that came with Digital Unix 4.0D";
other Y2k errors were also fixed.)

A system which is at the last valid day
of any month MUST roll over at midnight to the first day of the next month.
It SHOULD NOT (but, I think, not MUST NOT) be possible to set to a day
in any month after the last valid day (and likewise before the first),
and a system SHOULD if possible be designed not to allow this;
but, if such a setting has been made, it is not at all clear what the
setting should become at subsequent midnights - it's unlikely to be right,
anyway, and it may be better to leave the error blatant and unambiguous
by just incrementing the day field.

According to James Ussher, Anglican Archbishop of Armagh (1581-1656) in
a posthumous edition (of Annales veteris testamenti a prima mundi
origine deducti, 1650), The Annals of the World, iv, of 1658
: the Creation of the World occurred at the Equinox in October of BC
4004 (Julian). Note that Ussher seems, like others, to consider
the evening of a day to be what we would now call the previous evening.

Ussher wrote : ... from the evening
ushering in the first day of the World, to that midnight which began the
first day of the Christian era, there was 4003 years, seventy days, and
six temporarie hours - and AD 0001-01-01 0h minus 4003y 70d 6h is
BC 4004-10-22 18h, i.e. 6 p.m. of Saturday 22nd October, BC
4004. That makes the first full day Sunday 23rd (Genesis, 1,5;
the seventh day, of rest, is the Jewish Sabbath). Garden of Eden Time,
presumably.

The date and time are often misquoted as the 23rd or 26th,
and as 9 a.m.

Doubtless I've missed a lot ... Leap seconds may be omitted above.
Each "999" problem may be accompanied by a "1000" problem, and so on.
For over three decades after 2000, it will not be possible to
discriminate between YY/MM/DD and DD/MM/YY by inspection.

Cory Hamasaki (kiyoinc@ibm.net) wrote:
"... EXPDT=98000 or EXPDT=99000 or EXPDT=99365 which are fun dates, ..."
which I think are specials in an expiry date field
on some misbegotten systems ...

Also critical - the start of any regular period which first includes
2000 (the Jo Anne Effect) - for example corporate FY
1999-07-01..2000-06-30; or includes 1999. Note that while the UK
national FY starts on April 6th, UK companies can choose their own FY,
and I understand an April 1st start is common. Also that some bodies
number their FY with its start year, some with its end year; the
rational ones will, unless starting on Jan 1, use for example 1998-99 or
1999-2000 - which is a longer string.

When checking, verify Day-of-Week,
especially across the Feb-Mar transitions, and at the ends of 2000.

Foreigners, beware side-effects of peculiar calendars, and
North-South differences. Summer Time (Daylight Saving
Time, DST) rules mean that time errors may arise from Date or
Day-of-Week errors.

Any other date which used to seem far in the future (or
past) may have been used as a "special" marker. Consider YY/MM/DD with
YY=MM=DD≤12.

For many dates bearing an arithmetical relationship with the start of
2000, there may be corresponding problems with dates bearing the same
relationship with 2038-01-19 (or other range-end dates) - cf.
2008-01-19.

Alterations,
temporary or permanent, in Rules may cause difficulty
or confusion; the US has new Rules from 2007.

Misunderstandings,
of Rules may occur; the US 2007 change has been described as "Spring,
3 weeks earlier", which is true in 2007, but only in 3 years out of 7.

Spring :-

Clocks go forward in EU & NA (and ZA, AU, NZ, etc., ?).

One hour's worth of civil time is omitted,
timed events may be skipped.

EU-NA time differences change, previously for about a week,
but for three or four weeks from 2007; beware auto-changers.

Spring And Autumn :-

North-South time differences change, perhaps twice.

Brief time difference changes occur within NA;
their zones ripple-change at 0200h clock time,
whereas all EU changes simultaneously at 0100h GMT.

The USA clock change is at 0200h clock time, the UK at
0100h GMT; so do not be surprised if systems change an hour late.
My Win98 1st Edn + MSIE 4 changed at 0200h GMT, as was shown
by JavaScript Calendars and Clocks.

See 2001-04-01 - the effect probably repeated, on average,
every seven years.

In some countries, the dates of certain public holidays are governed
by that of Easter Sunday. Problems may occur when those coincide with
other important dates, such as the beginning or end of a financial
year.

Some "Diary" software is wrongly influenced by
Summer Time or
Time Zone,
using absolute where it should use local, or vice versa.
A regular 0900h meeting in Mar-Apr may shift to 0800h.
A Londoner, having entered a meeting for 1000h in Paris,
may find on arrival that it is now listed as at 1100h. It is unsafe
to rely, in today's world, on a time of dubious offset from GMT.

VMS TODR clock needs annual re-basing before 466 days
(2^32 × 10 ms) from previous Jan 1st, or next reboot
will hiccup. "Information about the VMS TODR (time of day register)
problem is in section 20.5.2.1 of the OpenVMS System Manager's Manual".

Windows 98 - any year/day end - The Sunday Times and the
BBC report that, at the end of each year, Windows 98 gains
two days or loses one. Microsoft agreed
saying that this only occurs if Windows 98
is started within a particular but defined second of the last minute
of the year; a fix is being developed. See
here?
But Risks Digest 19.92 #11
says that it can occur any day,
if one boots during a critical five seconds near midnight.

Some Microsoft Outlook Calendars have holidays such as US Memorial Day,
UK Spring Bank Holiday, UK Late Summer Holiday on the fourth Monday
of the month, rather than on the last one as it should be - so being a
week early three years in seven. See 1999 above; I only give samples.

Reported that UNIX systems often contain that "Fourth-is-Last" error.

Reported that the Delphi IDE may misjudge file state if the state of
Summer Time changes during use. Other IDEs, etc.?

5. Report seen : Solaris 2.x hangs when lbolt, which is
zeroed at boot and increments every centisecond, flips its MSB.
Sun bug ref is 4032974; fixed in 2.6, patches for earlier 2.x.
Also reported - and denied
(see Risks Digest 19.93) -
that this failure, in the ground controls,
killed the Galaxy IV "pager" satellite in May 1998.