FUNCTION Easter(aYear: WORD): TDateTime;
VAR
A, B, C, D, E, F, G, H, I, J, K, L, M, N: INTEGER;
vDay, vMonth: WORD;
BEGIN
A := aYear MOD 19;
B := aYear DIV 100;
C := aYear MOD 100;
D := B DIV 4;
E := B MOD 4;
F := (B + 8) DIV 25;
G := (B - F + 1) DIV 3;
H := (19 * A + B - D - G + 15) MOD 30;
I := C DIV 4;
J := C MOD 4;
K := (32 + 2 * E + 2 * I - H - J) MOD 7;
L := (A + 11 * H + 22 * K) DIV 451;
M := (H + K - 7 * L + 114) DIV 31;
N := (H + K - 7 * L + 114) MOD 31;
vDay := N + 1;
IF M = 3 THEN vMonth := 3 ELSE vMonth := 4;
Result := EncodeDate(aYear, vMonth, vDay);
END;