The YK2\Millennium bug

Overview
The Year 2000 problem, also known as the Y2K problem, the Millennium bug, the Y2K bug, or Y2K, was a computer bug related to the formatting and storage of calendar data. Problems were anticipated, and arose, because twentieth-century software often represented the four-digit year with only the final two digits—making the year 2000 indistinguishable from 1900. The assumption of a twentieth-century date in such programs caused various errors, such as the incorrect display of dates and the inaccurate ordering of automated dated records or real-time events.

In 1997 the British Standards Institute (BSI) developed standard DISC PD2000-1[1] defining "Year 2000 Conformity requirements" as four rules: (1) No valid date will cause any interruption in operations; (2) Calculation of durations between, or the sequence of, pairs of dates will be correct whether any dates are in different centuries; (3) In all interfaces and in all storage, the century must be unambiguous, either specified, or calculable by algorithm; (4) Year 2000 must be recognised as a leap year.

It identifies two problems that may exist in many computer programs. First, the practice of representing the year with two digits became problematic with logical error(s) arising upon "rollover" from x99 to x00. This had caused some date-related processing to operate incorrectly for dates and times on and after 1 January 2000, and on other critical dates which were billed "event horizons". Without corrective action, long-working systems would break down when the "... 97, 98, 99, 00 ..." ascending numbering assumption suddenly became invalid.

Secondly, some programmers had misunderstood the Gregorian calendar rule that determines whether years that are exactly divisible by 100 are not leap years, and assumed the year 2000 would not be a leap year. Years divisible by 100 are not leap years, except for years that are divisible by 400. Thus the year 2000 was a leap year.

Companies and organisations worldwide checked, fixed, and upgraded their computer systems to address the anticipated problem.[2]

Very few computer failures were reported when the clocks rolled over into 2000. It is not known how many problems went unrecorded.[3]

The problem
Even before 1 January 2000 arrived, there were also some worries about 9 September 1999 (albeit less than those generated by Y2K). Because this date could also be written in the numeric format 9/9/99, it could have conflicted with the date value 9999, frequently used to specify an unknown date. It was thus possible that database programs might act on the records containing unknown dates on that day. Data entry operators commonly entered 9999 into required fields for an unknown future date, (e.g., a termination date for cable television or telephone service), in order to process computer forms using CICS software.[19] Somewhat similar to this is the end-of-file code 9999, used in older programming languages. While fears arose that some programs might unexpectedly terminate on that date, the bug was more likely to confuse computer operators than machines.

Mostly, a year is a leap year if it is evenly divisible by four. A year divisible by 100, however, is not a leap year in the Gregorian calendar unless it is also divisible by 400. For example, 1600 was a leap year, but 1700, 1800 and 1900 were not. Some programs may have relied on the oversimplified rule that a year divisible by four is a leap year. This method works fine for the year 2000 (because it is a leap year), and will not become a problem until 2100, when older legacy programs will likely have long since been replaced. Other programs contained incorrect leap year logic, assuming for instance that no year divisible by 100 could be a leap year. An assessment of this leap year problem including a number of real life code fragments appeared in 1998. For information on why century years are treated differently, see Gregorian calendar.

Documented errors
Before 2000[edit] On 28 December 1999, 10,000 card swipe machines issued by HSBC and manufactured by Racal stopped processing credit and debit card transactions.[10] The stores relied on paper transactions until the machines started working again on 1 January.[28] On 1 January 2000[edit] When 1 January 2000 arrived, there were problems generally regarded[by whom?] as minor. Consequences did not always result exactly at midnight. Some programs were not active at that moment and would only show up when they were invoked. Not all problems recorded were directly linked to Y2K programming in a causality; minor technological glitches occur on a regular basis. Some caused erroneous results, some caused machines to stop working, some caused date errors, and two caused malfunctions.

Reported problems included
In Japan, at two minutes past midnight, Osaka Media Port, a telecommunications carrier, found errors in the date management part of the company's network. The problem was fixed by 02:43 and no services were disrupted.[31] In Japan, NTT Mobile Communications Network (NTT DoCoMo), Japan's largest cellular operator, reported on 1 January 2000, that some models of mobile telephones were deleting new messages received, rather than the older messages, as the memory filled up.[31] In Australia, bus ticket validation machines in two states failed to operate.[32] In the United States, 150 Delaware Lottery racino slot machines stopped working.[32] In the United States, the US Naval Observatory, which runs the master clock that keeps the country's official time, gave the date on its website as 1 Jan 19100.[33] In France, the national weather forecasting service, Meteo France, said a Y2K bug made the date on a webpage show a map with Saturday's weather forecast as "01/01/19100".[32] This also occurred on other websites, including att.net, at the time a general-purpose portal site primarily for AT&T Worldnet customers in the United States. On 1 March 2000[edit] Problems were reported but these were mostly minor.[34]
 * 1) In Sheffield, United Kingdom, incorrect risk assessments for Down syndrome were sent to 154 pregnant women and two abortions were carried out as a direct result of a Y2K bug (miscalculation of the mother's age). Four babies with Down syndrome were also born to mothers who had been told they were in the low-risk group.[29]
 * 2) In Ishikawa, Japan, radiation-monitoring equipment failed at midnight; however, officials stated there was no risk to the public.[30]
 * 3) In Onagawa, Japan, an alarm sounded at a nuclear power plant at two minutes after midnight.[30]

In Japan, around five percent of post office cash dispensers failed to work. In Japan, data from weather bureau computers was corrupted. In the UK, railway self service ticket machines ("Quickfare") printed tickets bearing the date "00 JNR 00" for 3 months until mid March 2000. These were incompatible with newly-installed Automatic Ticket Gates (ATGs) at Reading railway station.[citation needed] In the United States, the Coast Guard's message processing system was affected. At Offut Air Force Base south of Omaha, Nebraska records of aircraft maintenance parts could not be accessed. At Reagan National Airport, Washington, D C check - in lines lengthened after baggage handling programs were affected. In Bulgaria police documents were issued with expiry dates of 29 February 2005 and 29 February 2010 (which are not leap years) and the system defaulted to 1900.[35] On 31 December 2000 or 1 January 2001[edit] Some software did not correctly recognise 2000 as a leap year, and so worked on the basis of the year having 365 days. On the last day of 2000 (day 366) these systems exhibited various errors. These were generally minor, apart from reports of some Norwegian trains that were delayed until their clocks were put back by a month.[36]