$eastersunday(1818) == 1818-03-22
$eastersunday(2010) == 2010-04-04
$eastersunday(2038) == 2038-04-25
alias eastersunday {
var %ea.y = $1
var %ea.g = $mod(%ea.y,19)
var %ea.c = $int($calc(%ea.y / 100))
var %ea.h = $mod($calc( %ea.c - $int($calc(%ea.c / 4)) - $int($calc(((8 * %ea.c) + 13) / 25)) + ( 19 * %ea.g ) + 15 ),30)
var %ea.i = $calc(%ea.h - ($int($calc(%ea.h / 28)) * $calc( 1 - ( $int($calc( 29 / (%ea.h + 1))) * $int($calc((21 - %ea.g) / 11))))))
var %ea.j = $mod($calc(%ea.y + $int($calc(%ea.y / 4)) + %ea.i + 2 - %ea.c + $int($calc(%ea.c / 4))),7)
var %ea.l = $calc(%ea.i - %ea.j)
var %ea.month = $calc(3 + $int($calc((%ea.l + 40) / 44)))
var %ea.day = $calc(%ea.l + 28 - ( 31 * $int($calc(%ea.month / 4))))
var %ea.m = $base(%ea.month,10,10,2)
var %ea.d = $base(%ea.day,10,10,2)
return $+(%ea.y,$chr(45),%ea.m,$chr(45),%ea.d)
}