Bob Bemer noticed the problem in 1958. COBOL stored calendar dates with two-digit years, a shortcut that saved roughly twenty dollars per record. Bemer spent two decades warning programmers, IBM, the U.S. government, and the ISO that this would eventually break. Nobody acted. The code he was worried about was still running forty years later, and by the mid-1990s the looming rollover from '99 to '00 had become the most expensive software problem in history.
Global Y2K remediation cost an estimated $300 to $600 billion. Retired COBOL programmers were pulled back into service. The ITAA warned of a skill shortage as early as 1996. For a brief window, the obvious play seemed to be replacing these systems entirely. Spend the money once, on something modern.
Organizations chose differently. Y2K fixes came in three flavors: expansion (converting two-digit years to four), re-encoding (shifting date ranges), and windowing. Windowing was the cheapest. It added logic to interpret "00–49" as 2000–2049 and "50–99" as 1950–1999. Everyone involved understood it was a temporary patch. They chose it anyway, because the alternative required rewriting systems whose complexity nobody fully grasped.
The remediation effort itself changed the calculus. A 2002 study of the COBOL community's Y2K response documented what happened when organizations actually looked inside their systems: they found business rules layered over decades, regulatory logic nobody had documented, integration points with dozens of external systems. The experience "brought into sharp focus that COBOL assets were much more complex than previously imagined." Replacing all of that was orders of magnitude harder than fixing date fields.
So they fixed the date fields.
A 2003 survey predicted "a gradual decline in the importance of COBOL" over the following decade. The decline never came. When COVID-era unemployment claims crashed New Jersey's system in April 2020, 362,000 residents had applied in just two weeks. The mainframe buckled. Governor Murphy issued a public call for COBOL programmers. Oregon, New York, Connecticut: same vintage systems, same collapse. By 2025, the GAO identified eleven federal legacy systems most in need of modernization, several running COBOL with known cybersecurity vulnerabilities. The Social Security Administration alone runs approximately sixty million lines of it.
The windowing patches, meanwhile, are approaching their own expiration. One practitioner reported a batch job crash when a calculation crossed 2040, the boundary of the original window. Programmers had continued writing new windowing logic into code even after Y2K, apparently unaware of the constraint they were inheriting. A temporary fix generating its own dependencies.
Y2K was supposed to be the moment when the cost of preservation finally exceeded the cost of replacement. The largest coordinated software effort in history produced a different conclusion: these systems were harder to understand than anyone assumed, and they could be patched and kept running. The crisis that should have ended COBOL's dominance became the template for maintaining it. Organizations restructured their teams, their budgets, their expectations around the premise that the code would stay. Once that coordination settled in, the workaround had become infrastructure.

