The Year 2000 problem (also known as the Y2K problem, the Millennium bug, the Y2K bug, or simply Y2K) was a problem for both digital (computer-related) and non-digital documentation and data storage situations which resulted from the practice of abbreviating a four-digit year to two digits.
In computer programs, the practice of representing the year with two digits becomes problematic with logical error(s) arising upon "rollover" from x99 to x00. This has caused some date-related processing to operate incorrectly for dates and times on and after January 1, 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. Companies and organizations worldwide checked, fixed, and upgraded their computer systems.
The number of computer failures that occurred when the clocks rolled over into 2000 in spite of remedial work is not known; amongst other reasons is the reticence of organisations to report problems. There is evidence of at least one date-related banking failure due to Y2K. There were plenty of other Y2K problems, and that none of the glitches caused major incidents is seen by some, such as the Director of the UN-backed International Y2K Co-operation Centre and the head of the UK's Taskforce 2000, as vindication of the Y2K preparation. However, some questioned whether the relative absence of computer failures was the result of the preparation undertaken or whether the significance of the problem had been overstated.
Background
Y2K is a
numeronym and was the common abbreviation for the year 2000 software problem. The abbreviation combines the letter ''Y'' for "year", and ''k'' for the SI unit prefix
kilo meaning 1000; hence, ''2K'' signifies 2000. It was also named the ''Millennium Bug'' because it was associated with the popular (rather than literal) roll-over of the
millennium, despite the fact that the problem could have occurred at the end of any ordinary
century.
The Year 2000 problem was the subject of the early book, ''Computers in Crisis'' by Jerome and Marilyn Murray (Petrocelli, 1984; reissued by McGraw-Hill under the title ''The Year 2000 Computing Crisis'' in 1996). The first recorded mention of the Year 2000 Problem on a Usenet newsgroup occurred Friday, January 18, 1985 by Usenet poster Spencer Bolles.
The acronym Y2K has been attributed to David Eddy, a Massachusetts programmer, in an e-mail sent on June 12, 1995. He later said, "People were calling it CDC (Century Date Change), FADL (Faulty Date Logic) and other names."
Many computer programs stored years with only two decimal digits; for example, 1980 would be stored as 80. Some such programs could not distinguish between the year 2000 and the year 1900. Other programs would try to represent the year 2000 as 19100. This could cause a complete failure and cause date comparisons to produce incorrect results. Some embedded systems, making use of similar date logic, were expected to fail and cause utilities and other crucial infrastructure to fail.
Some warnings of what would happen if nothing was done were particularly dire:
The Y2K problem is the electronic equivalent of the El Niño and there will be nasty surprises around the globe. ''— John Hamre, United States Deputy Secretary of Defense''
Special committees were set up by governments to monitor remedial work and
contingency planning, particularly by crucial infrastructures such as telecommunications, utilities and the like, to ensure that the most critical services had fixed their own problems and were prepared for problems with others. While some commentators and experts argued that the coverage of the problem largely amounted to
scaremongering, it was only the safe passing of the main "event horizon" itself, January 1, 2000, that fully quelled public fears. Some experts who argued that scaremongering was occurring, such as
Ross Anderson, Professor of
Security Engineering at the
University of Cambridge Computer Laboratory, have since claimed that despite sending out hundreds of
press releases about research results suggesting that the problem was not likely to be as big a problem as some had suggested, they were largely ignored by the media.
Programming problem
The practice of using two-digit dates for convenience predates computers, but was never a problem until stored dates were used in calculations.
The need for bit conservation
In the first half of the 20th century, well before the computer era, business data processing was done using unit record equipment and punched cards, most commonly the 80-column variety employed by IBM, which dominated the industry. Many tricks were used to squeeze needed data into fixed-field 80 character records. Saving two digits for every date field was significant in this effort.
In the 1960s, computer memory and mass storage were scarce and expensive. Early core memory cost one dollar per bit. Popular commercial computers, such as the IBM 1401, shipped with as little as 2K bytes of memory. Programs often mimicked card processing techniques. Commercial programming languages of the time, such as COBOL and RPG, processed numbers in their character representations. Over time the punched cards were converted to magnetic tape and then disk files, but the structure of the data usually changed very little. Data was still input using punched cards until the mid-1970s. Machine architectures, programming languages and application designs were evolving rapidly. Neither managers nor programmers of that time expected their programs to remain in use for many decades. The realization that databases were a new type of program with different characteristics had not yet come.
There were exceptions, of course. The first person known to publicly address this issue was Bob Bemer, who had noticed it in 1958 as a result of work on genealogical software. He spent the next twenty years trying to make programmers, IBM, the US government and the ISO aware of the problem, with little result. This included the recommendation that the COBOL PICTURE clause should be used to specify four digit years for dates. Despite magazine articles on the subject from 1970 onwards, the majority of programmers and managers only started recognizing Y2K as a looming problem in the mid-1990s, but even then, inertia and complacency caused it to be mostly unresolved until the last few years of the decade. In 1989, Erik Naggum was instrumental in ensuring that Internet mail used four digit representations of years by including a strong recommendation to this effect in the Internet host requirements document RFC 1123.
Saving space on stored dates persisted into the Unix era, with most systems representing dates to a single 32-bit word, typically representing dates as elapsed seconds from some fixed date.
Resulting bugs from date programming
Storage of a combined date and time within a fixed binary field is often considered a solution, but the possibility for software to misinterpret dates remains because such date and time representations must be relative to some known origin. Rollover of such systems is still a problem but can happen at varying dates and can fail in various ways. For example:
The Microsoft Excel spreadsheet program had a very elementary Y2K problem: Excel (in both Windows and Mac versions, when they are set to start at 1900) incorrectly set the year 1900 as a leap year for compatibility with Lotus 1-2-3. In addition, the years 2100, 2200, and so on, were regarded as leap years. This bug was fixed in later versions, but since the epoch of the Excel timestamp was set to the meaningless date of January 0, 1900
in previous versions, the year 1900 is still regarded as a leap year to maintain backward compatibility.
In the C programming language, the standard library function to extract the year from a timestamp returns the year minus 1900. Many programs using functions from C, such as Perl and Java, two programming languages widely used in web development, incorrectly treated this value as the last two digits of the year. On the web this was usually a harmless presentation bug, but it did cause many dynamically generated web pages to display January 1, 2000 as "1/1/19100", "1/1/100", or other variants, depending on the display format.
JavaScript was changed due to the concerns of the Y2K bug, and the return value for years changed and thus differed between versions from sometimes being a four digit representation and sometimes a two-digit representation forcing programmers to rewrite already working code to make sure web pages worked for all versions. This forced programmers to change already working code and add checks to see if the returned date was less than 1900 and react accordingly.
Older applications written for the commonly used UNIX Source Code Control System failed to handle years that began with the digit "2".
In the Windows 3.x file manager, dates displayed as 1/1/19:0 for 1/1/2000 (because the colon is the character after 9 in the ASCII character set). An update was available.
Date bugs similar to Y2K
9 September 1999
Even before 1 January 2000 arrived, there were also some worries about 9 September 1999 (albeit lesser compared to 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. 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.
Leap years
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 on 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.
Year 2010 problem
Some systems had problems once the year rolled over to 2010. This was dubbed by some in the media as the "Y2K+10" or "Y2.01k" problem.
The main source of problems was confusion between hexadecimal number encoding and Binary-coded decimal (BCD) encodings of numbers. Both hexadecimal and BCD encode the numbers 0–9 as 0x0–0x9. But BCD encodes the number 10 as 0x10, whereas hexadecimal encodes the number 10 as 0x0A; 0x10 interpreted as a hexadecimal encoding represents the number 16.
For example, because the SMS protocol uses BCD for dates, some mobile phone software incorrectly reported dates of SMSes as 2016 instead of 2010. Windows Mobile is the first software reported to have been affected by this glitch; in some cases WM6 changes the date of any incoming SMS message sent after 1 January 2010 from the year "2010" to "2016". It has been said that this tends to affect phones on the CDMA network (not using SIM cards).
Other systems affected include EFTPOS terminals, and older Sony PlayStation 3 models (except the Slim).
The most important such glitch occurred in Germany, where upwards of 20 million bank cards became unusable, and with Citibank Belgium, whose digipass customer identification chips stopped working.
Year 2038 problem
The original Unix timestamp (
time_t
) stores a date and time as a signed 32-bit integer representing the number of seconds since January 1, 1970. During and after 2038, this number will exceed
, the largest number representable by a signed 32-bit integer, causing the
Year 2038 problem (also known as Unix Millennium bug, or Y2K38). To solve this problem, many systems and languages have switched to a 64-bit timestamp, or supplied alternatives which are 64-bit.
Mac OS rollover dates
The
Macintosh operating system has used three different date systems, all of which were Y2K compliant. The original Macs used 32 unsigned bits representing seconds (giving a range of 136 years) from Jan 1. 1904 (the first leap year of the 20th century), which would roll over on Feb. 6, 2040. Later (OS System 6) this was expanded to 64 bits, meaning no rollover would happen until the year 29940 AD. With the adoption of BSD Unix for Mac OS X, the Unix rollover date (for 32 bit systems) in 2038 came into effect.
Programming solutions
Several very different approaches were used to solve the Year 2000 problem in legacy systems. Three of them follow:
Date expansion: 2-digit years were expanded to include the century (becoming 4-digit years) in programs, files, and databases. This was considered the "purest" solution, resulting in unambiguous dates that are permanent and easy to maintain. However, this method was costly, requiring massive testing and conversion efforts, and usually affecting entire systems.
Date re-partitioning: In legacy databases whose size could not be economically changed, 6-digit year/month/day codes were converted to 3-digit years (with 1999 represented as 099 and 2001 represented as 101, etc.) and 3-digit days (ordinal date in year). Only input and output instructions for the date fields had to be modified, but most other date operations, and whole record operations required no change. This delays the eventual roll-over problem to the end of the year 2899.
Windowing: 2-digit years were retained, and programs determined the century value only when needed for particular functions, such as date comparisons and calculations. (The century "window" refers to the 100-year period to which a date belongs.) This technique, which required installing small patches of code into programs, was simpler to test and implement than date expansion, thus much less costly. While not a permanent solution, windowing fixes were usually designed to work for several decades. This was thought acceptable, as older legacy systems tend to eventually get replaced by newer technology.
Documented errors
Before 2000
On 28 December 1999, 10,000 card swipe machines issued by
HSBC and manufactured by
Racal stopped processing credit and debit card transactions. The stores relied on paper transactions until the machines started working again on 1 January.
On 1 January 2000
When 1 January 2000 arrived, there were problems generally regarded as minor. Problems did not always have to occur precisely 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.
Reported problems include:
In Ishikawa, Japan, radiation-monitoring equipment failed at midnight; however, officials stated there was no risk to the public.
In Onagawa, Japan, an alarm sounded at a nuclear power plant at two minutes after midnight.
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.
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.
In Australia, bus-ticket-validation machines in two states failed to operate.
In the United States, 150 slot machines at race tracks in Delaware stopped working.
In the United States, the U.S. Naval Observatory, which runs the master clock that keeps the country's official time, gave the date on its website as Jan. 1, 19100.
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". 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.
Government responses
United States
The
United States Government responded to the Y2K threat by passing the Year 2000 Information and Readiness Disclosure Act, by working with private sector counterparts in order to ensure readiness, and by creating internal continuity of operations plans in the event of problems. The effort was coordinated out of the White House by the
President's Council On Year 2000 Conversion, headed by
John Koskinen. The
White House effort was conducted in coordination with the then-independent
Federal Emergency Management Agency (FEMA), and an interim Critical Infrastructure Protection Group, then in the Department of Justice, now in Homeland Security. The Dutch Government promoted Y2K Information Sharing and Analysis Centers (ISACs) to share readiness between industries, without threat of antitrust violations or liability based on information shared.
The US Government followed a three part approach to the problem: (1) Outreach and Advocacy (2) Monitoring and Assessment and (3) Contingency Planning and Regulation.
A feature of US Government outreach was Y2K websites including Y2K.GOV. Presently, many US Government agencies have taken down their Y2K websites. Some of these documents may be available through National Archives and Records Administration or the Wayback Machine.
Each federal agency had its own Y2K task force which worked with its private sector counter parts. The FCC had the FCC Year 2000 Task Force.
Most industries had contingency plans that relied upon the Internet for backup communications. However, as no federal agency had clear authority with regard to the Internet at this time (it had passed from the US Department of Defense to the US National Science Foundation and then to the US Department of Commerce), no agency was assessing the readiness of the Internet itself. Therefore on July 30, 1999 the White House held the White House Internet Y2K Roundtable.
Norway and Finland
Norway and Finland changed their
National identification number, to indicate the century in which a person was born. In both countries the birth year was indicated with two digits only. However, a similar problem already existed, the "
Year 1900 problem", about distinguishing between people born in the 20th or 19th century, so the timing was more because of the Y2K attention than a solution to a new problem. In Finland the problem was solved by replacing the hyphen '-' in the number with the letter 'A' for people born in the 21st century. In Norway, the range or the individual numbers following the birth date was altered from 0-499 to 500-999.
Bulgaria
Although only two digits are allocated for the birth year in the
Bulgarian national identification number, the
year 1900 problem and subsequently the Y2K problem were addressed by the use of unused values above 12 in the month range. For all persons born before 1900, the month is stored as ''calendar month + 20'', and for all persons born after 1999, the month is stored as ''calendar month + 40''.
International cooperation
The International Y2K Cooperation Center (IY2KCC) was established at the behest of national Y2K coordinators from over 120 countries when they met at the First Global Meeting of National Y2K Coordinators at the United Nations in December 1988. IY2KCC established an office in Washington, D.C. in March 1999. Funding was provided by the World Bank, and Bruce W. McConnell was appointed as director.
IY2KCC's mission was to "promote increased strategic cooperation and action among governments, peoples, and the private sector to minimize adverse Y2K effects on the global society and economy." Activities of IY2KCC were conducted in six areas:
National Readiness: Promoting Y2K programs worldwide
Regional Cooperation: Promoting and supporting coordination within defined geographic areas
Sector Cooperation: Promoting and supporting coordination within and across defined economic sectors
Continuity and Response Cooperation: Promoting and supporting coordination to ensure essential services and provisions for emergency response
Information Cooperation: Promoting and supporting international information sharing and publicity
Facilitation and Assistance: Organizing global meetings of Y2K coordinators and to identify resources
IY2KCC closed down in March 2000.
Private sector response
The United States established the ''Year 2000 Information and Readiness Disclosure Act'', which limited the liability of businesses who had properly disclosed their Y2K readiness.
Insurance companies sold insurance policies covering failure of businesses due to Y2K problems.
Attorneys organized and mobilized for Y2K class action lawsuits (which were not pursued).
Survivalist-related businesses (gun dealers, surplus and sporting goods,
Latter Day Saints (Mormon) bookstores selling freeze-dried food) anticipated increased business in the final months of 1999 in an event known as the
Y2K scare. Some of these businesses experienced increased sales; some did not.
The Long Now Foundation, which (in their words) "seeks to promote 'slower/better' thinking and to foster creativity in the framework of the next 10,000 years", has a policy of anticipating the Year 10,000 problem by writing all years with five digits. For example, they list "01996" as their year of founding.
While there was no one comprehensive Internet Y2K effort, multiple Internet trade associations and organizations banded together to form the Internet Year 2000 Campaign. This effort partnered with the White House's Internet Y2K Roundtable.
The Y2K issue was a major topic of discussion in the late 1990s and, predictably, showed up in most popular media. A number of "Y2K disaster" books were published such as Deadline Y2K by Mark Joseph. Movies such as Y2K: Year to Kill capitalized on the currency of Y2K, as did numerous TV shows, comic strips, and computer games.
Cost
The total cost of the work done in preparation for Y2K is estimated at over 300 billion
US dollars. IDC calculated that the U.S. spent an estimated $134 billion preparing for Y2K, and another $13 billion fixing problems in 2000 and 2001. Worldwide $308 billion was estimated to have been spent on Y2K remediation. There are two ways to view the events of 2000 from the perspective of its aftermath:
Supporting view
This view holds that the vast majority of problems had been fixed correctly, and the money was well spent. The situation was essentially one of preemptive alarm. Those who hold this view claim that the lack of problems at the date change reflect the completeness of the project, and that many computer applications would not have continued to function into the 21st century without correction or remediation.
It has also been suggested that on September 11, 2001, the New York infrastructure (including subways, phone service, and financial transactions) were able to continue operation because of the redundant networks established in the event of Y2K bug impact and the contingency plans devised by companies. The terrorist attacks and the following prolonged blackout to lower Manhattan had minimal effect on global banking systems. Backup systems were activated at various locations around the region, many of which had been established to deal with a possible complete failure of networks in the financial district on December 31, 1999.
Expected problems that were not seen by small businesses and small organizations were in fact prevented by Y2K fixes embedded in routine updates to operating system and utility software that were applied several years before 31 December 1999.
It was suggested that Y2K plans were used to ground aircraft on
9/11, but the grounding was a variant of the
SCATANA procedures developed in 1958.
Supporters also point out that the maintenance effort for Y2K has been in use for years after. Programmers often cleaned up other issues while doing Y2K fixes to these programs and this is an additional benefit from the Y2K effort.
Opposing view
Others have claimed that there were no, or very few, critical problems to begin with, and that correcting the few minor mistakes as they occurred (the 'fix on failure' approach) would have been the most efficient and
cost effective way to solve the problem. Editorial writing in
the Wall Street Journal called Y2K an "end-of-the-world cult" and the "hoax of the century". The opposing view was bolstered by a number of observations.
The lack of Y2K-related problems in schools, many of which undertook little or no remediation effort. By September 1, 1999 only 28 percent of US schools had achieved compliance for mission critical systems, and a government report predicted that "Y2K failures could very well plague the computers used by schools to manage payrolls, student records, online curricula, and building safety systems".
The lack of Y2K-related problems in an estimated 1.5 million small businesses that undertook no remediation effort. On 3 January 2000 (the first weekday of the year) the Small Business Administration received an estimated 40 calls from businesses with computer problems, similar to the average. None of the problems were critical.
The lack of Y2K-related problems in countries such as Italy, which undertook a far more limited remediation effort than the United States. In an October 22, 1999, report, a US Senate Committee expressed concern about safe travel outside of the United States. The report stated that overseas public transit systems were considered vulnerable because many did not have an aggressive response plan in place for any problems. Internationally, the report singled out Italy, China and Russia as poorly prepared. The Australian government evacuated all but three embassy staff from Russia. None of these countries experienced any Y2K problems regarded as worth reporting.
The absence of Y2K-related problems occurring before January 1, 2000, even though the 2000 financial year commenced in 1999 in many jurisdictions, and a wide range of forward-looking calculations involved dates in 2000 and later years. Estimates undertaken in the leadup to 2000 suggested that around 25% of all problems should have occurred before 2000. Critics of large-scale remediation argued, during 1999, that the absence of significant problems, even in systems that had not been rendered compliant, suggested that the scale of the problem had been severely overestimated.
See also
Problems with epoch-based computer time representation
IPv4 address exhaustion, problems caused by the limited allocation size for numeric Internet addresses
ISO 8601, an international standard for representing dates and times, which mandates the use of (at least) 4 digits for the year
Perpetual calendar, a calendar valid for many years, including before and after 2000
Y2K – World in Crisis
References
External links
Center for Y2K and Society Records, Charles Babbage Institute, University of Minnesota. Documents activities of Center for Y2K and Society (based in Washington DC) working with non-profit institutions and foundations to respond to possible societal impacts of the Y2K computer problem: helping the poor and vulnerable as well as protecting human health and the environment. Records donated by executive director, Norman L. Dean.
International Y2K Cooperation Center Records, 1998-2000, Charles Babbage Institute, University of Minnesota. Collection contains the materials of the International Y2K Cooperation Center. Includes country reports, news clippings, country questionnaires, country telephone directories, background materials, audio visual materials and papers of Bruce W. McConnell, director of IY2KCC.
Preparing for an Apocalypse: Y2K, Charles Babbage Institute, University of Minnesota. A web exhibit curated by Stephanie H. Crowe
BBC: Y2K coverage
''In The Beginning There Was The Nerd'' - BBC Radio documentary about the history of computers and the millennium bug ten years after using archival recordings.
''The Surprising Legacy Of Y2K'' – Radio documentary by American Public Media, on the history and legacy of the millennium bug five years on.
The Yawn of a New Millennium
CBC Digital Archives - The Eve of the Millennium
Time running out for PCs at big companies ''CNN''
2000 problem
Category:Calendars
Category:COBOL
Category:Internet culture
Category:Programming bugs
Category:2000 in computer science
Category:Hazards
ar:مشكلة عام 2000
cs:Problém roku 2000
da:År 2000-problemet
de:Jahr-2000-Problem
es:Problema del año 2000
eo:Problemo de jaro 2000
fr:Passage informatique à l'an 2000
fy:Milenniumbrek
gl:Efecto 2000
ko:2000년 문제
id:Masalah Tahun 2000
it:Millennium bug
he:באג 2000
lt:2000 metų problema
ml:വൈ. 2 കെ.
ms:Pepijat tahun 2000
nl:Millenniumbug
ja:2000年問題
no:År 2000-problemet
pl:Problem roku 2000
pt:Problema do ano 2000
ru:Проблема 2000 года
simple:Year 2000 problem
sk:Problém roku 2000
sl:Hrošč tisočletja
fi:Y2K
sv:Millenniebuggen
th:ปัญหาปี ค.ศ. 2000
tr:Y2K problemi
vi:Sự cố máy tính năm 2000
zh:2000年问题