Is `cal` broken? What happened in September 1752

calhistory

If you look at the output of cal 9 1752 you will see this strange output:

   September 1752
 S  M Tu  W Th  F  S
       1  2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

The following story titled "cal 9 1752 explained"" was copied off of a newslist in the early 90's and archived under Collections of funny stuff for a computer audience by David G. Wiseman (a Network Manager in the Department of Computer Science at The University of Western Ontario).

The guy that originally wrote the "cal" command on some old Version 7 machine had an off-by-one error in his code. This showed up as some erroneous output when a malloc'd variable overwrote 12 extra bytes with zeroes, thus leading to the strange calendar output seen above.

Now, nobody in his right mind really cares about the calendar for September 1752. Even the idea of the year 1752 does not exist under UNIX, because time did not begin for UNIX until early 1970. As a result, nobody even knew that "cal" had this error until much later. By then there were thousands of copies of "cal" floating around, many of them binary-only. It was too late to fix them all.

So in mid-1975, some high-level AT&T officials met with the Pope, and came to an agreement. The calendar was retroactively changed to bring September 1752 in line with UNIX reality. Since the calendar was changed by counting backwards from September 14, 1752, none of the dates after that were affected. The dates before that were all moved by 12 days. They also fixed the man page for "cal" to document the bug as a feature.

The 11 days from September 3 to September 13 were simply gone from the records. They searched the history books and found that fortunately nothing of much significance happened during those 11 days.

Overall, this whole incident was pretty much a non-event. One science fiction author later heard about it, and blew the thing up into a full-length work of science-fiction called "The Lathe of Heaven", a book that in my opinion bears little resemblance to what really happened.

What is the real explanation for the output anomaly?

Best Answer

To trace the real story, try running man cal yourself:

The Gregorian Reformation is assumed to have occurred in 1752 on the 3rd
of September.  By this time, most countries had recognized the reforma-
tion (although a few did not recognize it until the early 1900’s.)  Ten
days following that date were eliminated by the reformation, so the cal-
endar for that month is a bit unusual.

Then, if your history is sketchy, continue with Wikipedia for information about the changes introduced by Gregorian Calendar and it's history of adoption in various parts of the world:

The Gregorian calendar reform contained two parts, a reform of the Julian calendar as used up to Pope Gregory's time, together with a reform of the lunar cycle used by the Church along with the Julian calendar for calculating dates of Easter.
[...]
In addition to the change in the mean length of the calendar year from 365.25 days (365 days 6 hours) to 365.2425 days (365 days 5 hours 49 minutes 12 seconds), a reduction of 10 minutes 48 seconds per year, the Gregorian calendar reform also dealt with the past accumulated difference between these lengths.
[...]
Because of the Protestant Reformation, however, many Western European countries did not initially follow the Gregorian reform, and maintained their old-style systems. Eventually other countries followed the reform for the sake of consistency, but by the time the last adherents of the Julian calendar in Eastern Europe (Russia and Greece) changed to the Gregorian system in the 20th century, they had to drop 13 days from their calendars, due to the additional accumulated difference between the two calendars since 1582.
[...]
Britain and the British Empire (including the eastern part of what is now the United States) adopted the Gregorian calendar in 1752, by which time it was necessary to correct by 11 days. Wednesday, 2 September 1752 was followed by Thursday, 14 September 1752.

By the time Unix came along and reset the worlds clocks to start at January 1st, 1970 there was nothing to be done about the whole mess except pick a date to show the reset on. Since the world adopted the current Gregorian calendar system at varying times in different countries, the exact time to make this correction is somewhat arbitrary.

If you ever have a reason to count dates going back that far in your software, you will run into much more significant issues than just that one reset! The history of calendaring is full of surprises!

Related Question