It’s the mid-1980s, and this pilot fish is working on a project to convert his company’s payroll system from one proprietary mainframe to a newer model.
“After converting the system, we did parallel runs for the same week between old and new hardware,” says fish.
And lo and behold, the newer hardware comes up with a total payroll that’s 8 cents less than the run on the old hardware. An intense effort over a long weekend is required to uncover the problem. What fish’s team finds in the end is that the 8-cent difference is spread among three hourly employees— the only people who received pay raises that week.
Digging into the calculation of the hourly rate, fish and his team discover that it’s calculated in COBOL to nine decimal places, and then rounded to three decimal places in an unusual way: The last six decimal places are split off, and if the value is greater than zero, the third decimal place is rounded up by one.