Sólo como curiosidad, los años bisiestos son todos los divisibles entre 4, excepto los que sean divisibles entre 100 y no entre 400. Algo así:
Código Delphi
[-]
function bisiesto(year : word): boolean;
begin
Result := (year mod 4 = 0) and ((year mod 100 <> 0) or (year mod 400 = 0));
end;