History of the 2000 error

In the late nineties, the world was worried about computer systems that were about to fail. Experts intimidated that at the onset of the year 2000 the software would not be able to correctly process the date, and the world would plunge into chaos: payment systems would shut down, exchanges would stop, any electronics would fail. In reality, the new century came without any problems, the experiences were in vain.



This is how the public consciousness perceived the mistake of 2000. For example, a British Brexit politician said fears about the economic impact of Brexit's role were similar to the Y2K bug panic.



The Millennium Mistake was forgotten almost immediately after the year 2000. Even in non-core publications, they discussed the Y2K bug for months, but already in the first days of the new year, attention to the topic faded away. The mesmerizing change in number from 1999 to 2000 did not create the disasters that were so frightened. Skeptics announced that the money was wasted on fixing the bug.



What happens behind the scenes is more important than the views of non-specialists. The degree of public panic really went above the level the situation deserved. The real danger of computer failures around the world on January 1, 2000 existed and required the intervention of software developers. Whole departments of programmers have been fixing the Y2K problem for years.



Source of problems



In everyday life, we do not write the first two characters of the year - they are almost always the same. A similar logic dictated the rule of saving space on the drives of early computers: if the century is unimportant, it can be discarded. Instead of eight digits, the date is written in six. The savings seem scanty, but if there are millions of dates, then the bill goes to megabytes of memory, which the first computers had few.







The 1958 book "Punched Cards Their Applications To Science And Industry" deals primarily with electromechanical punch card readers. Making a bibliography on a standard IBM punched card. Columns 15 and 16 show the last two digits of the year of publication. In another passage, the book motivatesselection of a short year format so that most entries are intended for the 20th century.



The person was born on January 1, XX20, and died on January 2, XX20. Did he live a fulfilling life or did he suddenly die after giving birth? It is impossible to establish this without context, so we will ask again whether an unusual long-liver or an infant has passed away. Likewise, without specifying the century, a computer cannot distinguish 2000 from 1900. This is the essence of the Y2K error.



A simple illustration: the expiration date on a bank card is indicated as MM / YY, and some of the simplest algorithms of payment systems checked expiration by arithmetic comparison of YYMM numbers. A counterexample for such an algorithm is any card valid after 2000. In 1999, a naive algorithm will invalidate a card with an expiration date of 12/01 until December 2001.



It seems strange that the bad habit of shortening the century survived until the late nineties. It is often said that the source of the problems is the terry legacy of the first computers and programming languages, which for some silly reason worked for almost 40 years without changes. This is only partly true: the dawn of the computer age first laid down the development traditions that still live on. For example, the modern development environment is wider than 80 columns of punched cards, but the 80-character limit per line of code was removed from Linux only three months ago.



Even by the late seventies, the characteristics of computers in business remained modest. At the same time, they were already required to have real applications in automation. A mainframe with a 0.9 million operations per second processor, 1.5 MiB of RAM and 2 GiB of disk storage somehow had to squeeze out 20,000 transactions per hour from 300-500 concurrent users. And these weak computers cost hundreds of thousands, millions of dollars. Only by 1990, a gigabyte of data on a hard disk fell below $ 10 thousand.



And yet not every enterprise can afford the flagship S / 360 , S / 370 or S / 390 families . For smaller customers, IBM has developed computers S / 3 , S / 32 ,S / 34 , S / 36 , S / 38 , AS / 400 with much more modest characteristics. The maximum capacity of the hard disk of an IBM System / 32 business computer  is 13 megabytes, into which you need to fit not only code, but also data.







Single-user computer IBM System / 32, 1975. The machine with a 6-line screen is designed for accounting-level tasks. Photo: Computer History Museum .



In such circumstances, the outrageous bloat of the XML or JSON level simply cannot appear. What kind of text formats are there - the bill went to each byte.



Similarly, dates were written in Cobol, one of the oldest business application programming languages. Here YY is two digits of the year, MM is the month number, DD is the day.



01 EMP-HIRE-DATE.
     03 EMP-HIRE-DATE-YY    PIC 99.
     03 EMP-HIRE-DATE-MM  PIC 99.
     03 EMP-HIRE-DATE-DD   PIC 99.


Here the date is represented as 3 bytes, 4 bits for each digit. Cobol is so ancient that even numbers in it are decimal (unless otherwise stated, USAGE IS COMPUTATIONAL ).



There is no standardized date field in Cobol, but the self-written implementations were still guided by something. The code ACCEPT todays-date FROM DATEreturns the current system date as a 6-digit YYMMDD number. If you compare it with the number from the presentation above, then it is easy to understand whether this day has come or not. The CENTURY-DATE function, which returned the date as an 8-digit YYYYMMDD with the century, will appear in later language standards .



It is convenient to sort by the date of the YYMMDD format: the comparison of what happened before is reduced to an arithmetic operation.



With the advent of the new century, sorting will break: year 00 must be later than 99, and not vice versa. The number 000101 will be less than 991231, that is, on January 1, 2000, the program will say that December 31, 1999 has not yet arrived. An attempt to calculate the period between these dates will return almost 100 years, not 1 day.



Even when upgrading older systems, the date format was not changed to maintain compatibility with existing databases and other components. The programmer did not think that his software would be used in 20-30 years. For him, the "bug of the year 2000" sounds even more distant than for us "overflow of 32-bit Unix-time". The latter will happen in 2038 and has been fixed in Linux for 32-bit systems only since the 5.6 kernel. But for some reason we are in no hurry to update old routers.



Part of the "blame" lay with the proliferation of binary-decimal code ( BCD ), in which each digit of the decimal number will be written in 4 bits. The binary-decimal code is due to the popularity of the banking industry due to the speed and predictability when rounding numbers - it is impossible in it a situation where the 0.1 + 0.2answer is 0.30000000000000004 . Accountants and financiers get a little nervous when rounding artifacts of binary floating point numbers appear. Therefore, processors for business applications supported native BCD processing, and there were fewer numbers to translate between notation forms.



A 6-digit date will fit in 3 bytes. Of course, it is safer to convert the date to a single binary integer. But conversion will require complex mathematical operations: these are long cycles or tables. This is more difficult than converting BCD to decimal code in linear time, sometimes even with a single machine instruction provided by the chip manufacturer. BCD adds only 1-2 extra bytes to the date record, but eliminates 5-10 assembly instructions, which are hard to understand and easy to get confused about.



In the eighties, programmers in the closet-sized business applications world were switching to desktop personal computers, but retained the mentality. On early 8- and 16-bit personal computers, they were greeted by the familiar hardware BCD support.



Finally, some of the problems related to the calendar. If 2000 is a leap year (it is divisible by 400), then 1900 is not. In real 2000, it is February 29th. If the computer calculates that it is 1900 in the yard, after February 28, March 1 will come immediately.



Early warnings



The public attention to the error of the turn of the century was attracted by the Canadian programmer Peter de Jager. In 1978, he, then an employee of IBM, noticed that a computer could take two zeros for 1900. The management dismissed Peter's complaint: why think about a problem that is not relevant in the next 22 years? By the year 2000, the mistake will definitely be corrected, he was told.



By 1989, the situation had not changed. At the time, de Jager was working for a company that deployed Professional Office Systems. On January 1, 1990, the system "fell ill": in the appendix one digit was allocated for the year. For the sake of experiment, Peter, who again remembered about 2000, shifted the time on his personal computer by a few minutes until midnight on December 31, 1999. Ten minutes later, the date changed to 1984.



In 1993, de Jager wrote a three-page article for Computerworld that started it all. The headline "Doomsday 2000" brought Y2K to the spotlight. At first, the colorful descriptions of the impending disaster were not taken seriously, but as the year 2000 approached, de Jager gained a reputation as an expert on digital armageddon. Since then, Peter has dealt exclusively with the problem of dates.







Cover of Time magazine, January 18, 1999



However, the oddities of date processing in the industry have been noticed without any articles. Martin Thomas, who led the Y2K bug fix team at Deloitte Consulting, described how a British grocery chain received a shipment of canned goods in the late 1980s. The accounting system adopted an expiration date of 01/00 for January 1900 and demanded that the 80-year-old illiquid be disposed of.



In mid-1997, Chrysler shifted all hours of the Sterling Heights assembly plant to December 31, 1999 for a test, which brought a lot of surprises. It was impossible to pay the salary. The security system simply turned off: no one could enter or exit.



By the end of the decade, companies have teams of engineers who only analyze and fix the Y2K bug. The problem was even brought to the interstate level: in 1998, at the G8 summit, all participants agreed on the danger of a bug. On October 19, 1998, the President of the United States adopts the Year 2000 Information and Readiness Disclosure Act . In Russia, the issue of Y2K compatibility was handled by the State Committee for Communications and Informatization and a special government commission.



Not without panic. The popularity of doomsday scenarios was present in the American mind throughout the nineties. Journalists and writers enthusiastically began to paint a picture of the digital Doomsday. Even large and reputable news outletsrecommended to stock up on water and food .







Y2K post-folders with elements of advice for a housewife The



literature of the Y2K bug ranged from detailed survival guides to fiction novels about the world after a global computer crash. The fictional works depicted a monstrous future. On January 1, precipitation falls out of the sky in the form of passenger airliners, and at every nuclear power plant there is a local Chernobyl. Household appliances explode, the global financial system collapses, power grids and telephones are cut off. Then, from these ingredients, a scenario is constructed for the depressive decomposition of civilization into a hungry semi-feudal society with a rampant violent organized crime.





The short



film starring Leonard Nimoy exploits the popular Y2K fear of error theme. The survivalist's handbooks detailed how to escape from the decline of civilization. They said almost nothing about trying to fix the bug and little discussion of the theory behind bug 2000. Instead, the books went straight into horror stories and advice for the world after bank closings and unemployment rampant. Someone simply advised to buy gold. Others spent pages listing items and resources that needed to be urgently stocked.



However, as workers of bookstores recall, this literature was not popular and disappeared from the shelves after the onset of 2000.



The Y2K Survivor Kits - tried by enterprising businessmen - had at least some practical value. Dry rations will retain their nutritional value regardless of the format of computer data, even if they are sold at an inflated price, trying to ride the wave of hysteria.







2000 apocalypse-ready family from Colorado



Types of fixes



The addition of two numbers solves the problem for 8000 years.



01 EMP-HIRE-DATE.
     03 EMP-HIRE-DATE-YR.
          05 EMP-HIRE-DATE-CC    PIC 99.
          05 EMP-HIRE-DATE-YY    PIC 99.
     03 EMP-HIRE-DATE-MM  PIC 99.
     03 EMP-HIRE-DATE-DD   PIC 99.


But the record length in Cobol is limited. If you need to insert two bytes in the center, you will have to rewrite the entire file from scratch into a new one and replace the original with the corrected copy. The application code that processes this file will also need to be adjusted. The process promises long testing and shutdowns. It is not always possible for the database to slow down like this.



A relatively small update to the program code is not so graceful and adds only a few decades of life, but is less time-consuming. Even if the year is less than 50, then this is already a new XXI century.



IF EMP-HIRE-DATE-YY > 50
   MOVE 19 TO PRINT-HIRE-DATE-CC
ELSE
   MOVE 20 TO PRINT-HIRE-DATE-CC.


Not every data assumes that dates before 1950 or after 2050 are not possible. In some cases, such "crutches" extended life by only 20 years. It turned out this January: someone received bills from 1920, some software did not work.







An erroneous receipt arrived at the beginning of January 2020.In



some cases, Y2K was corrected not until 10,000, but for 9 centuries. If 3 bytes of the date were stored in a 4-bit signed number, then one digit will fit into the unused half bytes to sign the century. Programs with this patch are affected by either year 2100 or year 2900.



A date can be represented as the number of days that have passed from a point in the past. The number of days is recorded in a 14-bit binary number. So you can imagine 16 384 different years. Specific restrictions are set by the choice of the era.



Sometimes the year was not corrected at all. The North American Aerospace Defense Command's TLE format describes objects in Earth orbit. Until now, only the last 2 characters of the year are indicated in it. It is curious that the situation can be indirectly influenced by satellite Internet companies, which are planning to launch tens of thousands of vehicles into orbit. TLE is designed for a five-digit number of objects, therefore depleting the pool of numbers will require a revision of the entire data format.



The details of the military hardware patches are understandably kept secret. Most often, the media released reports of a successful Y2K readiness test using simulators and a special test environment. Sometimes full-fledged combat tests took place. On May 1, 1999, the US Navy launched the Tomahawk cruise missile. The day before the launch, the rocket time was set to February 29, 2000, in order to check the handling of the leap year at the same time.







Concise sticker of equipment readiness by 2000



But the large-scale return of veteran programmers from retirement did not happen. Instead of the expected conscription of legions of kobolists, companies were often limited to full-time workers or outsourced fixes. In preparation for 2000, American companies poured billions into the low-cost labor of Infosys, Wipro and TCS. An unexpected consequence of Y2K was the popularization of firms from India. In the years to come, Indian outsourcing will become the norm.



Life after 23:59:59 December 31, 1999



Only 7% of Americans were very worried about the Y2K error. A poll in December 1999 showed that only one in five planned to stock up on cash. Someone was afraid to fly on the last day of the year. Peter de Jager says he flew on December 31st to show the safety of the patches.



The morning of January 1 was "unpleasant" surprised. There were no power outages, financial transactions were still proceeding regularly, a computer bug did not launch ICBMs. Waste counting began immediately. It is difficult to name the exact amount, although de Jager himself estimates the world costs at 300-400 billion dollars. Some banks, he said, spent up to $ 100 million.



Criticism still had a foundation. The commissions and experts overdid it and promised the unrealizable.



The world has not fallen because of incorrigible microcircuits in which the year is represented by two characters. Among them are BIOS chips of some computers and many microcontrollers. There are too many of them, everything cannot be replaced, the horror story claimed. In fact, Y2K experts usually had no experience in hardware development - at best they understood software. They did not think that translation and comparison of dates simply does not occur on these microcircuits.







Geek Squad's Y2K posters in the style of Fifties B movies were planned to be posted at bus stops, but there was simply no extra marketing required. Photo: Best Buy .



Another frightening scenario involved the development of a cascade of failures spreading from program to program and spreading to Y2K-ready components. In reality, if one subsystem erroneously returns the year 1900, then the other, interacting with it, will either pass the year 1900 further, or give an error, or mark the year incorrect.



It is easy to imagine how Y2K-ready and vulnerable to the 2000 bug, due to an unrecorded leap day on February 29, 2000, aircraft receive permission from a computer to land on the same lane. But in a web application, one incorrect database entry will not start walking around the system like a virus.



The layman felt neither the preparation for the bug, nor the sleepless night at the turn of the century for the technical support teams, nor the consequences of unpatched systems. Eyewitnesses and leaders of the Y2K elimination teams recall minor glitches, but nothing catastrophic or even particularly interesting. Some of those involved in fixing the bug attribute the low number of crash reports to companies simply not wanting to trumpet their own failures.



Some of the problems still leaked to the media. Here are just a few computer crashes. None of them threatened human life.



  • . , . . . .
  • - . Y2K, .
  • . CyberCash.  β€” . Apple. 700 .
  • . , . Golden 1 Credit Union 31 1999 .
  • Desktop software vendors often only patched newer versions. For example, Access version 2.0 (1994) and older does not correctly handle dates after 2000. The latter was unpleasant for Windows 3.0 users, in which newer versions of Access performed worse. On the other hand, this operating system was already out of use at that time.


In addition to minor problems, the media reported curious cases.



  • The first newborn in 2000 in Denmark was registered as 100 years old.
  • A New York City video rental customer returned the tape of The General's Daughter on time but was fined $ 91,250 for a century-long delay. The bug was fixed immediately.
  • The transfer of 6 million dollars dated December 30, 1899 arrived in the bank account of a German resident. History is silent on how long he held out as a millionaire.
  • The police system, affected by a 2000 bug, turned teenagers into old people. The crime reports reported sexual harassment of an 83-year-old woman by an 80-year-old man and two missing teenagers aged 83 and 84.


There is at least one serious medical error due to a Y2K bug. In one of the regions of England a few months after the year 2000 it was noted an unusually high number of children born with Down syndrome. The evaluation program incorrectly estimated the age of 154 pregnant women and incorrectly identified the risk group for subsequent anmyocentesis studies. In total, mothers with an incorrectly defined low risk group had 4 children with Down syndrome. Due to an inaccurate assessment of the high risk, 2 abortions were performed by mistake.






In the new millennium, the world immediately forgot about the computer bug of handling dates. Only the β€œY2K Compliant” stickers reminded of him, which were glued to the equipment ready for the new century.



Outwardly, the mistake of 2000 differs little from changing the display of exchange offices from four to five characters when the ruble falls. Adjusting the date to four digits looks like a small, albeit costly, economy-wide fix.



Hundreds of billions of dollars were spent on correcting the error. Without the obvious disastrous consequences, the Y2K patching effort looked redundant and unnecessarily expensive. The experts made excuses that the problem existed and was fixed. Some were just happy about the public attention to critical infrastructure and upgrades.



Events when the signs end have happened and will continue to happen in the future. The move from IPv4 to IPv6 networks aims to rid the world of a shortage of Internet addresses. Someday one more digit will be added to the phone numbers. January 19, 2038 for unpatched Unix systems will be either January 1, 1970, or, due to the use of a signed variable, December 13, 1901.



Any information project has limitations. But this should not be feared. If the system goes beyond its inherent assumptions, this only indicates its unplanned popularity.







Based on materials from Stack Exchange , Stack Overflow , US Department of Defense Archives ( 1 , 2 ), CelesTrak ( 1 , 2 ),Popular Mechanics , Chris Weston's blog , How-To Geek , Mental Floss , BBC , cs.swarthmore.edu , Fast Company , Inc.com , Computerworld , Cnet and Slate .



All Articles