Get either Orthodox Easter date and/or Western Easter date, using original tables. Thanks to Claus Tondering's Calendar Faq

Code:
#COMPILE EXE
#DIM ALL

' IMPORTANT NOTE!
' This utility uses several functions from the Gregorian Date Library, including the [U]new[/U] function MONTHDAYFORMAT.
' So don't forget to download it from my site, http://zijlema.basicguru.eu/files/gregorian.zip

#INCLUDE "C:\PBWIN80\SOURCES\DATETIME\GREGORIAN\GREGORIAN.INC"  ' modify path for your situation

%LOCALE_USA = 1033

' ******************************************************
' FUNCTION Orthodox_Easter                             *
' selects PFM-date from simple table of golden numbers *
' returns Orthodox Easter date in Gregorian calendar   *
' ******************************************************
FUNCTION Orthodox_Easter(BYVAL wYear AS WORD) AS LONG

  LOCAL bGoldenNbr AS BYTE, JulianPFM AS LONG, GregorianPFM AS LONG
  LOCAL iGregAdjust AS LONG, iGregCorrect AS LONG
  LOCAL wMonth AS WORD, wDay AS WORD

  bGoldenNbr = wYear MOD 19 + 1

  ' first step: select Paschal Full Moon date in Julian Calendar
  SELECT CASE AS LONG bGoldenNbr
    CASE 1
      wMonth = 4 : wDay = 5
    CASE 2
      wMonth = 3 : wDay = 25
    CASE 3
      wMonth = 4 : wDay = 13
    CASE 4
      wMonth = 4 : wDay = 2
    CASE 5
      wMonth = 3 : wDay = 22
    CASE 6
      wMonth = 4 : wDay = 10
    CASE 7
      wMonth = 3 : wDay = 30
    CASE 8
      wMonth = 4 : wDay = 18
    CASE 9
      wMonth = 4 : wDay = 7
    CASE 10
      wMonth = 3 : wDay = 27
    CASE 11
      wMonth = 4 : wDay = 15
    CASE 12
      wMonth = 4 : wDay = 4
    CASE 13
      wMonth = 3 : wDay = 24
    CASE 14
      wMonth = 4 : wDay = 12
    CASE 15
      wMonth = 4 : wDay = 1
    CASE 16
      wMonth = 3 : wDay = 21
    CASE 17
      wMonth = 4 : wDay = 9
    CASE 18
      wMonth = 3 : wDay = 29
    CASE 19
      wMonth = 4 : wDay = 17
  END SELECT
  JulianPFM = Gregorian(wYear, wMonth, wDay)                  ' as Gregorian Day Number

  ' second step: Convert Julian PFM to Gregorian Calendar:
  GregorianPFM = JulianPFM + 10                               ' add initial 10 days adjustment from 1582
  IF wYear > 1699 THEN
    iGregAdjust = (wYear \ 100) - 16                          ' add 1 day for each centennial year from 1700
    iGregCorrect = iGregAdjust \ 4                            ' correct for centennial leap years: 2000, 2400 etc.
    GregorianPFM = GregorianPFM + iGregAdjust - iGregCorrect
  END IF

  ' third step: Find next Sunday:
  DO
    INCR GregorianPFM
  LOOP UNTIL GregDayOfWeek(GregorianPFM) = 7                  ' until next Sunday = Easter date
  FUNCTION = GregorianPFM
END FUNCTION

' ******************************************************
' FUNCTION Western_Easter                              *
' selects PFM-date from table of epacts                *
' returns Orthodox Easter date in Gregorian calendar   *
' ******************************************************
FUNCTION Western_Easter(BYVAL wYear AS WORD) AS LONG
  LOCAL wCentury AS WORD, wMonth AS WORD, wDay AS WORD
  LOCAL bGoldenNbr AS BYTE, Epact AS LONG
  LOCAL SolarEqu AS LONG, LunarEqu AS LONG, GregorianPFM AS LONG

  wCentury   = wYear \ 100 + 1                                ' integer division by 100 returns first 2 digits
  bGoldenNbr = (wYear MOD 19) + 1                             ' Golden Number (Metonic Moon Cycle), base one!
  Epact      = (11 * (bGoldenNbr - 1)) MOD 30                 ' Julian Epact
  SolarEqu   = (3 * wCentury) \ 4
  LunarEqu   = (8 * wCentury + 5) \ 25
  Epact      = Epact - SolarEqu + LunarEqu + 8                ' adjust to Gregorian Epact

  ' Epact must be a value from 1 through 30, so:
  IF Epact >30 THEN
    Epact = Epact MOD 30                                      ' for values greater than 30 use MOD operator
  ELSEIF Epact <1 THEN
    DO
      Epact = Epact + 30                                      ' for values < 1 (zero or even negative) add 30...
    LOOP UNTIL Epact >0                                       ' as often as needed to get a value greater than zero
  END IF

  SELECT CASE AS LONG Epact
    CASE 1 TO 12
      wMonth = 4
      wDay = 13 - Epact                                       ' = 12 through 1
    CASE 24 TO 30
      wMonth = 4
      SELECT CASE AS LONG Epact
        CASE 24 : wDay = 18
        CASE 25
          IF bGoldenNbr > 11 THEN wDay = 17 ELSE wDay = 18
        CASE 26 TO 30 : wDay = 43 - Epact                     ' = 17 through 13
      END SELECT
    CASE 13 TO 23
      wMonth = 3
      wDay = 44 - Epact                                       ' = 31 through 21
  END SELECT
  GregorianPFM = Gregorian(wYear, wMonth, wDay)

  ' second step: find following Sunday
  DO
    INCR GregorianPFM
  LOOP UNTIL GregDayOfWeek(GregorianPFM) = 7                  ' until first (= Easter) Sunday
  FUNCTION = GregorianPFM
END FUNCTION

FUNCTION PBMAIN () AS LONG
  LOCAL st AS SYSTEMTIME

  GetLocalTime st

  MSGBOX "EASTER IN " & FORMAT$(st.wYear) & ": " & $CRLF & _
         "Western: " & MonthDayFormat(Western_Easter(st.wYear), %LOCALE_USA) & $CRLF & _
         "Orthodox: " & MonthDayFormat(Orthodox_Easter(st.wYear), %LOCALE_USA), 64, " Testing Easter tables..."
END FUNCTION