La troisième étape est un peu plus complexe. Après le 15 octobre 1582 les dates sont exprimées dans le calendrier grégorien, il faut calculer la correction à apporter pour que le programme précédent donne des résultats corrects. Les différences entre les deux systèmes vont apparaître: le 15 octobre 1582 avec un décalage de 10 jours entre les deux calendriers et à chaque siècle quand celui-ci n'est pas un multiple de 4 en introduisant un décalage d'un jour.

Ce qui introduit pour chaque siècle le décalage suivant :

AnnéeJulienneGrégorienne Décalage après le 28/2
1600bissextilebissextile-10
1700bissextilenormale-11
1800bissextilenormale-12
1900bissextilenormale-13
2000bissextilebissextile-13

En plus du décalage constant de 10 jours intervenu le 15 octobre 1582, il faut introduire un décalage de trois jours par période de 400 ans. Nous allons utiliser la formule <0.75*a> dans laquelle l'opérateur <> représente la fonction plafond qui arrondit les nombres à l'unité supérieure. Ainsi:

<0.75*1> = <0.75> = 1
<0.75*2> = <1.50> = 2
<0.75*3> = <2.25> = 3
<0.75*4> = <3.00> = 3
<0.75*5> = <3.75> = 4

Comme l'opérateur plafond n'existe pas en C, nous utiliserons soit la fonction double ceil(double) de la bibliiothèque mathématique, soit la fonction partie entière appliquée à l'expression nombre+0.99.

Il ne faut pas oublier de comptabiliser ce décalage le 1er mars.