      integer year,month,day
    1 print *,' enter year to find easter for.'
      read (5,*)year
      if(year .le. 0 ) stop
      call easter(year,month,day)
      print *,' easter for year ',year,' is in month ',month
      print *,'  and day ',day 
      go to 1
      end
      subroutine easter(year,month,day)
      integer year,month,day
      integer cent,greg,gold,clav,leaperr,epact,e0,d,a

*   step 1.  Calculate century of given year

      cent = int(year/100) + 1

*   step 2.  Calculate Gregorian correction.

      greg = int ( ( 3 * cent) / 4 ) - 12

*   step 3.  Calculate the number of the year within the Metonic 19 year 
*            cycle.

      gold = year + 1 - 19 * int(year/19)

*    step 4.  Calculate the Clavian Correction which compensates for the 
*             moon cycle not being exactly 19 years.   

      clav = int (   (8 * cent + 5) / 25 ) - 5 - greg

*    step 5.  Calculate the leap year correction.


      leaperr = int( 5 * year / 4) - greg - 10 

*     step 6.   Calculate position of moon on January First.

      e0 = 11 * gold + 20 + clav
      epact = e0 - 30 * int ( e0/30)
 

*     step 7.    Correction for special cases.

      if( (epact .eq. 25) .and. (gold .gt. 11) ) epact = 26
      if  (epact .eq. 24)  epact = 25


*      step 8.   Calculate # days past last day of February.

      d = 44 - epact

  
*      step 9.   position for correct month and day of week.

      if (d .lt. 21) d = d + 30
      a = d + leaperr
      d = d + 7 - ( a - 7 * int (a/7) )

*     step 10.  Calculate month and day.

      if (d .gt. 31 ) go to 1
      month = 3
      day = d
      return
   1  continue
      month = 4
      day = d - 31
      return
      end

