The leap year problem
A significant number of programs incorrectly treats the year 2000 as a non-leap year. We list 21 real life code fragments illustrating the large variety of ways that are used to determine whether a given year is a leap year or not. Some of these fragments are correct; others will fail in the year 2000. The fragments are written in C, Pascal, COBOL, and assembly language. We discuss the consequences for automated tool support, as well as the organizational implications of the leap year problem.