Earth, Moon and Planets, 74 (1996), No. 3, 223 – 230.

The Persian calendar for 3000 years

KAZIMIERZ M. BORKOWSKI
Torun Radio Astronomy Observatory, PL 87-100 Toru, Poland

(Received 10 October 1996, accepted 10 November 1996)

Abstract. Using the analytical theory of the motion of the Earth around the Sun the times of the vernal (Spring) equinox has been calculated over the period from the Hijra (AD 622) to AD 3800. These data alone allow to decide whether a particular Persian (or Jalaali) calendar year is common or leap. Presented analysis shows that an algorithm implemented in the so called Khayam program is valid for the years 1799 to 2256 (1178 to 1634 Jalaali). A concise algorithm has been worked out that reconstructs the pattern of leap years over time span of about 3000 years. FORTRAN routines for conversion between the Jalaali, Gregorian and Julian calendars and the Julian Day Number are presented.

1.  Rules of the Persian calendar

The Persian or Jalaali calendar is officially used in Iran and surrounding areas. It is a solar calendar closely following the astronomical seasons, thus requires the knowledge of exact times of the vernal (Spring) equinox.

The rules of the Jalaali calendar are quite simple. Years of 12 months are reckoned from the era of the Hijra, commemorating the migration of the Prophet and his followers from Mecca to Medina in AD 622. A Jalaali year begins on the first day of astronomically determined spring or on the day following it according to whether the exact moment of the equinox occurs before or after, respectively, 12:00 of the Teheran mean time. The first 6 months all have 31 days and the last 6 manths all have 30 days in leap years. In common years the last month has 29 days. Thus every season is associated with three consecutive months.

As expected, roughly every fourth year in the Persian calendar is the leap one. This is the well known regularity in solar calendars. However, normally after every 32 (sometimes after 28 or 36) years follows an extra common year making four consecutive 365-day years instead of the usual three. Currently the leap years go smoothly in the 33-year cycles and specifically they are those years that after dividing by 33 leave a remainder of 1, 5, 9, 13, 17, 22, 26 and 30. E.g., the Jalaali year 1375 that begun on March 20, 1996 has the remainder of 22 and thus is the leap year. These rules are implemented in the so called Khayam program of Ali Moayedian and Mash Cheragh-Ali, which is available on the Internet. Unfortunately this simple behaviour will not last indefinitly and the 33-year cycle is sure to break sometimes. Hossein Bagherzadeh Rafsanjani in his introduction to the program suggests that a break may occur `early in the next century Hijra' and that the program should be correct until early 2050's of Gregorian calendar. It is the purpose of this paper to determine exactly how long the above rule of remainders will be valid and to establish the rules for the Jalaali calendar as far into future as is presently practical.

2.  Astronomical background

In general, to determine if a Persian year is leap or common it is necessary to find the date and time of the vernal equinox at the beginning of that year and at the beginning of the next year. To this end I have employed an analytical theory of the motion of the Earth around the Sun (Bretagnon et al.1986), which is accurate to about 2 in the angular coordinates of the Sun as viewed from the Earth. The theory has been used in a converging process to find the Terrestrial Time (TT or Ephemeris Time) of the epoch at which the celestial longitude of the Sun equalled 0. The TT of the equinox has been then converted to the Universal Time (UT1) using past estimates, measurements, and future predictions of the difference DT = TT - UT1 = 32.184 - (UT1 - TAI), where TAI is the atomic time scale of BIPM. For past years and far future predictions I have used essentially tabular data and formulae of Stephenson and Morrison (1984):
DT =



(44.3t + 320)t + 1360
for   y < 948
25.5t2
for   948 y < 1637
25.5t2 - 36
for   y > 2005
(here the last expression has an extra -36 s to ensure a smooth transition from tabular data), where t = (y - 1800)/100, y is the Julian year, and DT is obtained in seconds. The most recent tabular data and predictions until 2006 were taken from IERS Annual Reports and the USNO archives available on Internet.

In Table I we present partial list of vernal equinoxes given in the Universal Time that might be of general interest. As a final step, the mean time of Teheran has been calculated by adding its geographic longitude, 3.425 hours, to the UT1 of the equinoxes.

Table I: Vernal equinoxes 1900 – 2099

 Year DayUT1      Year Day UT1  YearDayUT1YearDayUT1
 AD  Mar [h:m]    AD  Mar [h:m]AD Mar[h:m]AD Mar[h:m]

 1900 21  1:39    1950 21  4:35      200020 7:35      205020 10:19
 1901 21  7:24    1951 21  10:26  200120 13:31205120 15:58
 1902 21  13:16    1952 20  16:13  200220 19:16205219 21:55
 1903 21  19:15    1953 20  22:01  200321 1:00205320 3:46
 1904 21  0:58    1954 21  3:53  200420 6:48205420 9:33
 1905 21  6:58    1955 21  9:35  200520 12:33205520 15:28
 1906 21  12:53    1956 20  15:21  200620 18:25205619 21:10
 1907 21  18:33    1957 20  21:16  200721 0:07205720 3:07
 1908 21  0:28    1958 21  3:05  200820 5:48205820 9:04
 1909 21  6:13    1959 21  8:55  200920 11:44205920 14:44
 1910 21  12:03    1960 20  14:43  201020 17:32206019 20:38
 1911 21  17:54    1961 20  20:32  201120 23:21206120 2:25
 1912 20  23:29    1962 21  2:30  201220 5:14206220 8:07
 1913 21  5:18    1963 21  8:20  201320 11:01206320 13:59
 1914 21  11:11    1964 20  14:10  201420 16:57206419 19:38
 1915 21  16:51    1965 20  20:05  201520 22:45206520 1:27
 1916 20  22:47    1966 21  1:52  201620 4:30206620 7:19
 1917 21  4:37    1967 21  7:37  201720 10:28206720 12:53
 1918 21  10:26    1968 20  13:22  201820 16:15206819 18:48
 1919 21  16:19    1969 20  19:08  201920 21:58206920 0:44
 1920 20  21:59    1970 21  0:56  202020 3:49207020 6:34
 1921 21  3:51    1971 21  6:38  202120 9:37207120 12:34
 1922 21  9:48    1972 20  12:21  202220 15:33207219 18:20
 1923 21  15:29    1973 20  18:13  202320 21:24207320 0:13
 1924 20  21:21    1974 21  0:06  202420 3:06207420 6:08
 1925 21  3:12    1975 21  5:57  202520 9:01207520 11:46
 1926 21  9:01    1976 20  11:50  202620 14:45207619 17:38
 1927 21  14:59    1977 20  17:42  202720 20:24207719 23:30
 1928 20  20:44    1978 20  23:33  202820 2:16207820 5:10
 1929 21  2:35    1979 21  5:22  202920 8:01207920 11:00
 1930 21  8:30    1980 20  11:10  203020 13:51208019 16:43
 1931 21  14:06    1981 20  17:03  203120 19:40208119 22:34
 1932 20  19:54    1982 20  22:55  203220 1:21208220 4:31
 1933 21  1:43    1983 21  4:39  203320 7:22208320 10:10
 1934 21  7:27    1984 20  10:24  203420 13:17208419 15:59
 1935 21  13:18    1985 20  16:14  203520 19:03208519 21:53
 1936 20  18:57    1986 20  22:03  203620 1:02208620 3:35
 1937 21  0:45    1987 21  3:52  203720 6:49208720 9:28
 1938 21  6:43    1988 20  9:39  203820 12:40208819 15:16
 1939 21  12:28    1989 20  15:28  203920 18:31208919 21:06
 1940 20  18:24    1990 20  21:19  204020 0:11209020 3:02
 1941 21  0:21    1991 21  3:02  204120 6:06209120 8:41
 1942 21  6:10    1992 20  8:48  204220 11:52209219 14:33
 1943 21  12:03    1993 20  14:41  204320 17:27209319 20:34
 1944 20  17:48    1994 20  20:28  204419 23:20209420 2:21
 1945 20  23:37    1995 21  2:15  204520 5:07209520 8:15
 1946 21  5:33    1996 20  8:03  204620 10:57209619 14:02
 1947 21  11:13    1997 20  13:55  204720 16:52209719 19:48
 1948 20  16:57    1998 20  19:54  204819 22:33209820 1:40
 1949 20  22:48    1999 21  1:46  204920 4:28209920 7:17

A full list of equinoxes comprising the years AD 550 to 3800, referred to the Teheran time has been used to identify the leap years of the Jalaali calendar. The pattern of leap years is quite regular: they come every 4 years in groups of 28, 32 or 36 years with each group supplemented with an extra common year. Usually these are 32+1 year groups and the few occasional exceptions, called here breaks, can be used in a practical procedure to reconstruct the entire sequence of leap years. In Table II the Jalaali years represent the first year (leap) of a new cycle (mostly the 33-year cycle) after a break (i.e. after the 4-th common year closing the 28 or 36 year group).

Table II: The years of the Gregorian calendar (Gy) that mark the end of a 29- or 37-year period which breaks the 33-year rule validity. Around 20 March Gy ends the 4th common year and begins the Jalaali leap year Jy

Gy Jy           Gy  Jy          Gy Jy          Gy Jy 

560 -61  1307 6861831121028832262
630 9  1377 7562256163529452324
659 38  1439 8182681206030152394
820 199  1732 11112718209730772456
1047 426  1802 11812813219237993178

As can be seen from Table II, the 33-year cycle operates continuously between 1831 and 2256. Closer examination shows that in fact it operated from 1799, since 1831 marks just the end of the 29-year period, and would not appear here if the previous break would fall four years earlier. This is thus the time span of validity of the Khayam algorithm. There is however a possibility that it will not be as good as that and the upper limit may fall on AD 2124. I shall return to this question when discussing errors.

3.  Algorithm for the Jalaali calendar

The proposed algorithm is based on the described list of the breaking years in which the fourth common Jalaali year occurs after 28 or 36 (and not 32) years of 4-year periods since the previous occurence of four common years in succession. During 3000 years there are only about 20 such breaking years, and they allow for an easy reconstruction of a complete sequence of Jalaali leap years.

To determine whether a Jalaali year is common or leap, one finds the number, say N, of years that have passed since the last breaking year of Table II. With one exception, the year of interest is leap if -1 plus the remainder of (N + 1)/33 is evenly divisible by 4, or
lp = MOD[MOD(N + 1,33) - 1,4]
equals 0, where MOD is the operation of finding the remainder when the first argument is divided by the second. The exception concerns the case when the year of interest lies within 5 years of the following breaking year. In this case instead of N + 1 above the value of N + 1 4 must be used, where the + sign is chosen if the cycle, where the considered year belongs, is 29-year long, and the - sign otherwise (i.e. with the 37-year long cycle).

Using the integer arithmetic this algorithm reduces to just two FORTRAN lines (apart of searching the list for the required breaking years). For the common years the remainder of division by 4, i.e. lp, tells how many years have passed since the last leap year. E.g. the remainder of 1 (2 or 3) means that the leap year was the previous one (2 or 3 years ego). Obviously, it is also possible to tell whether the considered year is the 4-th common one. The case occurs when N + 1 (or N + 1 4 if it is the exceptional situation), is evenly divisible by 33.

To relate the Jalaali calendar to the Gregorian one it is necessary to find the number of leap years since an initial epoch in both these calendars. In the Jalaali calendar, the number of leap years between two adjacent break years of Table II, say between yi and yj is
lj = 8 INT(Nj/33) + INT[MOD(Nj,33)/4]
where Nj = yj - yi and INT is the function taking the integral part of the evaluated argument. The numbers lj must be summed until yj remains smaller than the year in question. Then the sum must be increased by
8 INT(N/33) + INT{[MOD(N,33) + 3]/4} + k,
the number of leap years since the last break year. Here k is 1 only when the considered year lies 4 years before the following breaking year (yj) and the current group is 37 year long; otherwise it is 0.

This algorithm has been encoded in the FORTRAN integer arithmetic subroutine (Table III) JalCal(Jy,leap,Gy,March), which for a given Jalaali year Jy returns information on the leap year in the leap variable, which assumes values 0 to 4, as described above. The routine returns also the Gregorian date of the first day of the Jalaali year in the variables Gy (Gregorian year) and March (day of March). Thus it can be directly used to relate the beginning of the Persian calendar for any year within about 3000 years to the Gregorian calendar.

Table III:

       subroutine JalCal(Jy,leap,Gy,March)
c This procedure determines if the Jalaali (Persian) year is 
c leap (366-day long) or is the common year (365 days), and 
c finds the day in March (Gregorian calendar) of the first 
c day of the Jalaali year (Jy)
c Input:  Jy - Jalaali calendar year (-61 to 3177)
c Output:
c   leap  - number of years since the last leap year (0 to 4)
c   Gy    - Gregorian year of the beginning of Jalaali year
c   March - the March day of Farvardin the 1st (1st day of Jy)
       integer breaks(20),Gy
c Jalaali years starting the 33-year rule
       data breaks/-61,9,38,199,426,686,756,818,1111,1181,
     *   1210,1635,2060,2097,2192,2262,2324,2394,2456,3178/
       Gy=Jy+621
       leapJ=-14
       jp=breaks(1)
       if(Jy.lt.jp.or.Jy.ge.breaks(20)) print'(a,i5,a,i5,a)',
     *' Bad year number:',Gy,' Gregorian   =',Jy,' Jalaali'
c Find the limiting years for the Jalaali year Jy
       do 1 j=2,20
       jm=breaks(j)
       jump=jm-jp
        if(Jy.lt.jm) go to 2
       leapJ=leapJ+jump/33*8+MOD(jump,33)/4
1      jp=jm
2      N=Jy-jp
c Find the number of leap years from AD 621 to the beginning 
c of the current Jalaali year in the Persian calendar
       leapJ=leapJ+N/33*8+(MOD(N,33)+3)/4
        if(MOD(jump,33).eq.4.and.jump-N.eq.4) leapJ=leapJ+1
c and the same in the Gregorian calendar (until the year Gy)
       leapG=Gy/4-(Gy/100+1)*3/4-150
c Determine the Gregorian date of Farvardin the 1st
       March=20+leapJ-leapG
c Find how many years have passed since the last leap year
       if(jump-N.lt.6) N=N-jump+(jump+4)/33*33
       leap=MOD(MOD(N+1,33)-1,4)
       if(leap.eq.-1) leap=4
          end

Such a procedure can be employed for full date conversion from the Persian calendar if we note that until the Jalaali date m (month) and d (day)
31(m - 1) - (m - 7) INT(m/7) + d
days have elapsed since the beginning of any Jalaali year.

Practical programs were written and tested for convertion of Jalaali calendar, first into the Julian Day number (JD), and then into the Gregorian or Julian calendar, and also for reverse conversion of these calendars to the Persian one. The following procedures in FORTRAN serving this purpose are available from the author (see this complete coversion program listing and the DOS executable):

  • function Jal2JD(Jy,m,d) — converts the Jalaali calendar date to the Julian Day number at the mean Greenwich noon (12:00 UT1),
  • function JG2JD(JGy,m,d,1/0) — converts the Julian/Gregorian date to the Julian Day number,
  • subroutine JD2Jal(JDN,Jy,m,d) — converts the Julian Day number to the Jalaali calendar date,
  • subroutine JD2JG(JDN,JGy,m,d,1/0) — converts the Julian Day number to the Julian/Gregorian date.

    4.  Error discussion

    Due to approximate nature of the ephemeris the results of the equinox time may be in error of about 1 minute of time. Uncertainty of DT adds to the error of the final result. This parameter is very well known from direct observations only back to about AD 1630.

    Table IV: Critical years in the Jalaali calendar most likely to alter the sequence of breaking years. The first four columns give Gregorian date in March, the Teheran mean time (in hours and minutes) of the vernal equinox, and the value of DT = TT - UT1. Then there is the day in March of the first day of the Jalaali year (Farvardin the 1st) and the year itself. The last column shows possible additions (+) to and subtractions (-) from the breaking years list of Table II.

    YearDay ofTeheranDT 1stJalaali    Effect of
    AD Marchtime [min]Farv.year    actual error

     6262112:00.461.8225  -9      -38
     6592111:56.657.921    38-38      +71
     8862011:57.735.620  265+269    +298
    11132111:58.520.021  492 +496    +525
    13732012:01.37.721  752 -756    +789
    21242012:00.33.9211503+1503  +1540
    23222111:58.011.0211701+1705  +1734
    26812011:59.632.4202060-2060  -2097
    27802012:04.840.2212159+2159  -2192
    28132011:56.343.0202192-2192  +2225
    28462011:59.145.9202225+2229  -2262
    28792012:03.548.9212258-2262  +2295
    29122012:03.352.0212291+2291  -2324
    30112112:00.961.7222390-2394  +2427
    30442012:02.265.2212423+2423  -2456
    31762011:56.779.9202555+2559  +2588
    32092011:59.983.8202588+2592  +2621
    33702012:11.0104.2212749+2749  +2786
    34732011:48.2118.4202852+2856  +2885
    35022112:10.4122.5222881+2881  +2918
    36342012:04.5142.4213013+3013  +3050
    36672012:03.8147.6213046+3046  +3083

    The past breaking years, as being purely astronomical and based on contemporary knowledge, may not coincide with the actual Jalaali calendar, used then for astronomical purposes only. Also, the future breaking years of Table II may disappear altogether or new ones will have to be introduced depending on real rotation of the Earth (the behaviour of the DT value). The most critical years are listed in Table IV, where the date in March (Gregorian calendar) and the predicted Teheran mean time are given along with the assumed DT value. The table contains all the cases that the equinox time is removed from 12:00 Teheran time by less than (1 + DT/10) minutes, where the 1 minute is due to uncertainty of the equinox determination and the other term is intended to account for 10% error in DT (an ad hoc error estimate). The Jalaali years indicated in Table IV are leap years if the equinox time is less than 12:00, otherwise the previous year is leap. The expected change to be introduced to the list of breaking years in case the actual equinox time shifts across the noon point (12:00) due to combined effect of the ephemeris error and a change in DT, is shown in the last column of this table.

    It will be noted, that the discussed change affects only the year in question (shifting it by one day relative to e.g. Gregorian calendar) and the last day of the previous Jalaali year. Thus the algorithm in the form presented may lose its validity only for some of the future Jalaali years given in Table IV. In the worst case, if my estimates of DT are systematically low, the 10 critical years with equinox greater than 12:00 of that table may drop to less then 12:00 and thus the corresponding Jalaali years would shift by one day into the previous year, themeselves becoming the leap years. Should the DT be systematically high instead, there would be only 7 future years of Table IV endangered by an opposite shift.

    2124 is the nearest doubtful year. The Teheran times of the vernal equinox indicate that in this year the 1503 Jalaali year starts on 21 March and not on 20 March just because the calculated equinox time was only about one third of a minute past 12:00 (see Table IV). Thus if DT will be greater by some 20 seconds than predicted in this analysis, this year will become an additional breaking point to be added to the presented algorithm along with another one 37 years later (1540 Jalaali).

    References

    Bretagnon P., Simon J.L., Laskar J., 1986, J. Hist. Astron., 17, 39 50
    McCarthy D.D., Babcock A.K, 1986, Phys. Earth Planet. Interiors, 44, 281
    Stephenson F.R., Morrison, L.V, 1984, Phil. Trans. Roy. Soc. London, A313, 47

    File translated from TEX by TTH, version 3.12 on 19 Aug 2002.