Solar Calendar Leap Rules

Bookmark or cite this page as <http://www.sym454.org/leap/>

by Dr. Irv Bromberg, University of Toronto, Canada email icon

[Click here to go back to the Symmetry454 / Kalendis home page]


Menu of Topics:

  1. Introduction
  2. Basic Leap Cycle Calculations
  3. Astronomical Reference Data
  4. Patterns in the Intervals Between Leap Years
  5. Linear Approximation Progressive Leap Rules
  6. Smoothly Spread Symmetrical Leap Cycles
  7. Dynamic Demonstration of Mean Solar Calendar Drift Rates
  8. Automatic Fixed Leap Cycle Finder
  9. Mediant Fractions, Farey Pairs, and Ford Circles
  10. Calendar Seasons: Stable Points in the Solar Cycle
  11. Format of the Leap Rule Tables
  12. Leap Rules for Aligning Calendars Relative to the Northward Equinox
  13. Leap Rules for Aligning Calendars Relative to the North Solstice
  14. Other Leap Rules for the Northward Equinox
  15. Leap Rules for Aligning Calendars Relative to the Southward Equinox
  16. Leap Rules for Aligning Calendars Relative to the South Solstice
  17. Leap Rules for Aligning Calendars Relative to the Besselian New Year Moment
  18. Leap Rules for Sidereal Calendars (Zodiac)

Introduction

This page is a collection of astronomical evaluations of a variety of Earth solar calendar leap rules. The focus is on leap rules that will be reasonably accurate for the next several millennia, either based on astronomical calculations or employing a fixed arithmetic cycle where the number of days per cycle is divisible by 7 for compatibility with both leap day and leap week calendars. Leap week calendars are perpetual, yet preserve the traditional 7-day weekly cycle.

Except for the ISO standard leap rule and my RJiso variant, the arithmetic for these leap rules spreads the leap year intervals as smoothly as possible. All of these leap rules were selected for their ability to closely align calendars with the solar cycle for as long as possible — so don't expect to see large differences between them.


Basic Leap Cycle Calculations

For any type of "leap long" calendar cycle where long (leap) years are less common than short years:

DaysPerCycle = (YearsPerCycle × LengthOfShortYear) + (LeapYearsPerCycle × DaysPerLeap).

For a leap day calendar the expression above reduces to DaysPerCycle = (YearsPerCycle × 365) + LeapYearsPerCycle.

For any type of "skip" calendar cycle where long years are more common than short (skip) years and DaysPerSkip is a negative number:

DaysPerCycle = (YearsPerCycle × LengthOfLongYear) + (SkipYearsPerCycle × DaysPerSkip).

There actually isn't any advantage in using a skip calendar even in cases where long years occur much more commonly than short years (such as 6-day leap week solar calendars), because it makes no difference to the relative frequencies of short and long years. To convert a "leap long" to a "skip" cycle:

SkipsPerCycle = ShortYearsPerCycle = YearsPerCycleLongYearsPerCycle.

The calendar mean year for any fixed arithmetic leap cycle = DaysPerCycle / YearsPerCycle.

For example, the number of days per cycle in a 7-day leap week calendar is given by DaysPerCycle = (YearsPerCycle × 364) + (LeapWeeksPerCycle × 7). If YearsPerCycle = 293 and LeapWeeksPerCycle = 52 then there are (293 × 364) + (52 × 7) = 106652 + 364 = 107016 days per cycle. (This leap cycle is interesting because the total number of leap days per cycle is exactly equal to the length of a short year.) The calendar mean year is then 107016 / 293 = 365+71/293 days or approximately 365.242320819113 days (to typical double precision floating point accuracy).

When calculating the mean year using floating point arithmetic, as with an ordinary programming language or a basic calculator or computer spreadsheet program the result may be approximate, even if calculated to double precision, but an extra 3 decimal points (significant figures) are obtainable by calculating the fractional part separately from the integer part of the mean year. For example, taking 365+71/293 days and converting just the fractional part 71/293 days to a decimal number yields 0.242320819112628, which corrects the last digit of the previous example and adds 3 more significant figures. (The exact decimal value of the fraction 71/293 has 146 repeating digits.)

For a leap day cycle the fractional part of the mean year is simply LeapDaysPerCycle / YearsPerCycle, and for a leap week calendar it is 7 × LeapWeeksPerCycle / YearsPerCycle – 1.

More generally, for a "leap long" calendar (common years short):

FractionalPartOfMeanYear = LengthOfShortYearfloor(MeanYear) + DaysPerLeap × LeapYearsPerCycle / YearsPerCycle.

and for a "skip" calendar (common years long) where DaysPerSkip is a negative number:

FractionalPartOfMeanYear = LengthOfLongYearfloor(MeanYear) + DaysPerSkip × SkipYearsPerCycle / YearsPerCycle.

The fractional part of the mean year for any type other than a leap day calendar directly indicates the leap day cycle that has an equal calendar mean year, where the numerator is the number of leap years per cycle and the denominator is the number of years per cycle. For example the 293-year cycle with 52 leap weeks per cycle has a mean year of 365+71/293 days as shown above. The fraction indicates that a leap day cycle with 71 leap years per 293- year cycle has an equal mean year. As a less trivial example, the 231-year cycle having 41 leap weeks has (231 × 364) + (41 × 7) = 84371 days per cycle, for a mean year of 84371/231 = 365+56/231 days. Both 56 and 231 are divisible by 7 so the fraction 56/231 reduces to 8/33, indicating that the mean year of the 231-year leap week cycle is equal to that of a 33-year leap cycle having 8 leap days per cycle.


To convert any fraction of a day, such as the fractional part of a calendar mean year, to hours, minutes, and seconds:

Hours = floor( FractionOfDay × 24 )

Minutes = floor( [ FractionOfDay – ( Hours / 24 ) ] × 1440 )

Seconds = [ FractionOfDay – ( Hours / 24 ) – ( Minutes / 1440 ) ] × 86400

The seconds can be truncated to whole seconds, or rounded to the nearest second, or rounded to the desired number of decimal points, or expressed as an exact fraction. For example, 365+71/293 days is exactly 365 days 5 hours 48 minutes and 56+152/293 seconds (slightly more than 56.5 seconds).

As a shortcut, simply paste the fractional part into a cell of a spreadsheet program such as Microsoft Excel (for example enter the formula "=71/293" into the cell) and then format that cell to display as time to the second. This works because in such programs the time of day is internally simply the fraction of the day that has elapsed since midnight. For calendar mean years that are not exact to the second, if desired calculate the leftover fraction of a second as 86400 × ( FractionOfDayHours / 24 – Minutes / 1440) – Seconds.


The mean year of a leap week calendar in terms of weeks is exactly WeeksPerShortYear + LeapWeeksPerCycle / YearsPerCycle. For example, the mean year of a 293–year cycle with 52 leap weeks per cycle is exactly 52+52/293 weeks. The same result is obtained by exactly dividing the calendar mean year in days by the number of days per week, for example: (293+71/293) / 7 = 52+52/293 weeks, indicating that a 293-year cycle has the same mean year if it has 71 leap days or 52 leap weeks. In the case of a leap day cycle that doesn't contain a whole number of weeks, upon division the denominator of the result fraction will become multiplied by the number of days per week, for example: (365+8/33) / 7 = 52+41/231 weeks, indicating that the leap week mean year equivalent of a 33-year cycle with 8 leap days is a 231-year cycle having 41 leap weeks.

The mean year of a leap month calendar in terms of mean months is exactly MonthsPerShortYear + LeapMonthsPerCycle / YearsPerCycle. For example, the mean year of a 353-year lunisolar cycle with 130 leap months per cycle is exactly 12+130/353 mean months.


If the fractional part of the calendar mean year is not already known as an exact proper fraction then it can be calculated using a computing engine capable of arbitrary–precision arithmetic, for example Mathematica or the computer programming language "LISP", or the free on-line mathematics resource at <http://www.wolframalpha.com/>.

If one is given only the double-precision decimal mean year then a continued fraction calculator will probably yield the proper fraction. For further information about continued fractions, see <http://mathworld.wolfram.com/ContinuedFraction.html>. The following are continued fraction calculators that you can freely use on–line:

This one displays the full continued fraction graphically:
<http://www.hostsrv.com/webmaa/app1/MSP/webm1010/continuedfraction>

This one shows intermediate values used to compute the continued fraction, and offers a full explanation about continued fraction:
<http://www.mcs.surrey.ac.uk/Personal/R.Knott/Fibonacci/cfCALC.html>

The continued fraction calculator may offer a series of convergents that approximate the given decimal fraction with progressively better accuracy. Usually the appropriate one to pick is the most accurate convergent. Confirm that you have picked the correct fraction by checking that its floating point value is exactly the same as that of the calendar mean year.


Determining the exact mean year for a lunisolar calendar presents special challenges: The arithmetic given above is valid if the DaysPerLeap is the mean month, and yields the exact mean year if the exact mean month is given and an arbitrary precision calculation engine is used. The phrase exact mean month refers to the assumed fixed arithmetic approximation to the lunar cycle, which can be expressed as 29 days plus a fraction FullMonthsPerLunarCycle / MonthsPerLunarCycle, where a full month has 30 days and a deficient month has 29 days, implying that DeficientMonthsPerLunarCycle = MonthsPerLunarCycleFullMonthsPerLunarCycle. Of course, for the above expressions to work with skip long cycles DaysPerSkip = – DaysPerLeap.

Even without an arbitrary precision calculation engine, the necessary fractions can be obtained by carrying out the calculations using strictly integer arithmetic, yielding an integer numerator and an integer denominator in the final result. The key to working strictly with integers is to do the calculations in terms of months instead of days, as follows:

For leap long cycles: MonthsPerSolarCycle = YearsPerCycle × 12 + LeapsPerCycle

For skip leap cycles: MonthsPerSolarCycle = YearsPerCycle × 13 – SkipsPerCycle

denominator = YearsPerCycle × MonthsPerLunarCycle

DaysPerLunarCycle = 29 × MonthsPerLunarCycle + FullMonthsPerLunarCycle

numerator = MonthsPerSolarCycle × DaysPerLunarCycle – 365 × denominator

Finally, reduce the fraction numerator / denominator, which is the fractional part of the year in excess of 365 days. To reduce any fraction, serially divide the numerator and denominator by their greatest common divisor (GCD) until their GCD = 1. (Tip: GCD is a built-in worksheet function of Microsoft Excel 2002 and later.)

For example, let's take the case of a 353-year cycle with 130 leap months per cycle and an underlying lunar cycle having a mean month of 29+451/850 days:

MonthsPerSolarCycle = 353 × 12 + 130 = 4366

denominator = 353 × 850 = 300050

DaysPerLunarCycle = 29 × 850 + 451 = 25101

numerator = 4366 × 25101 – 365 × 300050 = 72716

Fractional part of the year in excess of 365 days = 72716/300050 and reduces to 36358/150025 of a day

= 5 hours 48 minutes 58+4310/6001 seconds

= 0.2423462756207298783536077320446592... of a day.

Obviously, the subtraction of 365 × denominator in the numerator can be omitted, which would then yield the mean year including 365 days plus the fraction. Depending on the selected lunar cycle, however, that can easily result in the numerator exceeding the maximum range of 32-bit integer arithmetic, and it also means that your algorithm for reducing the fraction must be compatible with improper fractions and potentially very large numerator values.

Alternative more obscure expressions will arrive at exactly the same numerator for the fractional part of the year in excess of 365 days:

For leap long: numerator = FullMonthsPerLunarCycle × MonthsPerSolarCycle + MonthsPerLunarCycle (29 LeapsPerCycle – 17 YearsPerCycle)

For skip short: numerator = FullMonthsPerLunarCycle × MonthsPerSolarCycle + MonthsPerLunarCycle (377 YearsPerCycle – 29 SkipsPerCycle)

The denominator is as given above, then reduce the fraction.

As an example of this alternative formula, let's take the case again of a 353-year cycle with 130 leap months per cycle but this time with an underlying lunar cycle having a slightly shorter mean month of 29+425/801 days:

numerator = 425 × 4366 + 801 (29 × 130 – 17 × 353) = 68519

denominator = 353 × 801 = 282753

Fractional part of the year in excess of 365 days = 68519/282753 of a day (irreducible)

= 5 hours 48 minutes 57+4671/31417 seconds

= approximately 0.2423281096929... of a day (all of the decimal points repeat with a period of 352 digits).


To find the 7-day leap week cycle that is the equivalent of a given leap day cycle, first check if DaysPerCycle is divisible by 7. If not, then make YearsPerCycle = YearsPerCycle × 7 and DaysPerCycle = DaysPerCycle × 7, so that there will be a whole number of weeks in the cycle. Finally, LeapWeeksPerCycle = [DaysPerCycle – (YearsPerCycle × 364)] / 7. For example, the Revised Julian calendar has 218 leap years per 900-year cycle, so its calendar mean year = 365+218/900 days, which reduces to 365+109/450 days. Next we calculate DaysPerCycle = (450 × 365) + 109 = 164359 days, but that is not divisible by 7 so we set YearsPerCycle = 450 × 7 = 3150 years and DaysPerCycle = 164359 × 7 = 1150513 days. Finally, we obtain LeapWeeksPerCycle = [1150513 – (3150 × 364)] / 7 = 559 leap weeks in 3150 years.

Alternatively, LeapWeeksPerCycle = LeapDaysPerCycle + YearsPerCycle. If LeapWeeksPerCycle is divisible by 7 then LeapWeeksPerCycle = LeapWeeksPerCycle / 7 otherwise YearsPerCycle = 7 × YearsPerCycle.

Calendrical calculations make frequent use of dividing a number and keeping only the remainder, for example, dividing by 7 to determine the weekday, as will be done below. Many programming languages have a MOD operator or function intended for this purpose, but in many languages MOD handles negative or real numbers improperly (the MOD operator of Microsoft Visual Basic is defective on both counts). To avoid the risk of such errors, herein I will use the solution recommended by Dershowitz & Reingold in Calendrical Calculations: 3rd Edition (CC3, see <http://www.calendarists.com/>):

modulus( x, y ) = x y × floor( x / y )

Not being limited to integer division, the CC3 modulus function also works properly with floating point (real number) parameters provided both the x and the y parameter and the function return value are declared as Double Precision.

The modulus function is essential for implementing smoothly spread leap rules, that is where leap years are as uniformly distributed as possible within each leap cycle, thus minimizing "jitter" relative to an equinox or solstice or New Year Moment. A generic leap rule can be stated as:

isLeapYear( TheYear ) = modulus( LeapYearsPerCycle × TheYear + K, YearsPerCycle ) < LeapYearsPerCycle

where the result is boolean (TRUE if TheYear is a leap year, FALSE otherwise), and K is a constant that sets the long-term mean equinox or solstice alignment. In the section entitled "Smoothly Spread Symmetrical Leap Cycles", below, I will explain how to select K so as to yield a symmetrical distribution of leap years, and the important advantages of that strategy.


Astronomical Reference Data

I used the calendrical calculation functions and astronomical algorithms described in "Calendrical Calculations" by Nachum Dershowitz and Edward M. Reingold, third edition published in 2008 by Cambridge University Press. I also employed some algorithms from "Astronomical Algorithms" by Jean Meeus, second edition, published in 1998 by Willmann-Bell, Richmond, Virginia, USA.

Limitations: The astronomical algorithm employed for solar longitude ignores Neptune, Pluto and all asteroids, based on Meeus' truncation of the VSOP87 planetary theory. The parabola used to approximate Delta T is based on the assumption that solar days will get 1.75 milliseconds longer each century (for more information about Delta T see this page). Relativistic effects not accounted for.

Method: Various astronomical, mean astronomical, and fixed arithmetic calendar leap rules were implemented in Kalendis and applied to the Symmetry454 calendar. The alignment of the Northward Equinox (March Equinox, Boreal Vernal Equinox, Austral Autumnal Equinox) relative to the 79th calendar day (Sym454 March 16) or of the North Solstice (June Solstice, Boreal Summer Solstice, Austral Winter Solstice) relative to the 171st calendar day (Sym454 June 17), as appropriate to the specific leap rule, was evaluated using the above astronomical algorithms. Each leap rule was normalized for the Prime Meridian, to "level the playing field" for leap rule comparisons. Where a curvilinear relationship was obtained a 3rd or 4th order polynomial was fit to the points by statistical least-squares regression analysis, and plotted as a thick green line which indicates the average long-term alignment of the equinox or solstice. Most of the reasonably short fixed arithmetic leap-week-compatible cycles (total number of days per cycle divisible by 7) were evaluated (see also Karl Palmen's web page on leap week calendars).

These leap rules are introduced in the document "All About the Symmetry454 Leap Week" and their arithmetic and computer implementation is detailed in the document "Symmetry454 Calendar Arithmetic". I omitted evaluations of the Kalendis Mean Orbital Year (MOY) and Rotation-Adjusted Year (RAY) leap rules because they are not intended to align directly with any equinox or solstice, although MOY and RAY maintain an ultra-long-term constant average relationship with respect to ALL of the equinoxes and solstices.

At this time it is not possible to employ any simple fixed arithmetic leap cycle to align any calendar relative to the Southward Equinox (September Equinox, Boreal Autumnal Equinox, Austral Vernal Equinox), because that equinoctial year length is changing too rapidly and will continue to do so for more than twenty thousand years. Likewise the next era of reasonable stability of the South Solstice (December Solstice, Boreal Winter Solstice, Austral Summer Solstice) as well as the Besselian New Year is more than fifty thousand years away. The astronomical basis for these statements is presented on my "Lengths of the Seasons" web page at <http://www.sym454.org/seasons/>, in particular see the charts in rows 3 and 4 on that page.


Patterns in the Intervals Between Leap Years

A leap week calendar must employ some mix of 6- and 5-year intervals between leap years. A constant interval of 5 years between leap years is far too frequent. Such a calendar would have mean year of 365+2/5 ≡ 365.4 days ≡ 365 days 9 hours and 36 minutes per year. That is 3 hours and 47 minutes too long per year, relative to the present era northward equinoctial year of 365 days 5 hours 49 minutes and 0 seconds, corresponding to a drift rate of about another day later than the equinox every 6+1/3 years! Likewise a constant interval of 6 years between leap years is too infrequent. Such a calendar would have a mean year of 365+1/6 ≡ 365.16... ≡ 365 days and 4 hours per year, which is 1 hour and 48 minutes too short per year, corresponding to a drift rate of about another day ahead of the equinox every 13+1/5 years!

In the Middle Ages the Icelandic calendar employed a 364-day year with a leap week inserted once every 7 years, which yielded a calendar mean year of exactly 365 days, or a rather rapid drift rate of almost one day in every 4 years! Intercalation of 5 leap weeks in 28 years, for example in the pattern 6+5+6+5+6 years, yields a calendar mean year of exactly 365+1/4 days, like the Julian calendar, about 11 minutes longer than the northward equinctial year, and drifts at the rate of about one day in 130+10/11 years, relative to the equinox.

Therefore, to better track that equinox, or any desired point in the solar cycle, a leap week calendar must employ some scheme to alternately use 6- and 5-year intervals between leap years, maintaining a mix to provide a calendar mean year that closely approximates the mean year of the target point in the solar cycle. Since the drift rate of an every-5-years leap cycle is about twice as fast as that of an every-6-years leap cycle, in terms of the number of years per day of drift, for the present era all appropriate mixes must employ a approximately twice as many 6-year intervals as 5-year intervals. The information presented on my "Lengths of the Seasons" web page at <http://www.sym454.org/seasons/> is a useful guide for selecting a calendar mean year and thence an appropriate calendar leap cycle.

For fixed arithmetic leap cycles, the average interval between leap years = YearsPerCycle / LeapYearsPerCycle, or in terms of days = DaysPerCycle / LeapYearsPerCycle. For the 52/293 leap cycle that average is 2058 days = exactly 294 weeks. Other fixed arithmetic cycles may insert the leap week at slightly shorter or longer average intervals.

For the leap week cycles presented here, leap year intervals occur in groups of either ( 6 + 6 + 5 ) = 17 years or ( 6 + 5 ) = 11 years.

These in turn can most commonly be grouped into sub-cycles of ( 3 × 17 + 11 ) = 62 years or ( 2 × 17 + 11 ) = 45 years.

For example, the sub-cycle pattern for the 52/293 leap cycle is ( 4 × 62 + 45 ) = 293 years.

Such leap interval grouping is not a design feature for these cycles. Rather, sub-cycles are a natural outcome of spreading the leap years of a fixed arithmetic leap cycle as smoothly as possible, generating a repeating pattern that is predictable. The existence of sub-cycle patterns does not increase any calendar's equinox or solstice or New Year Moment "jitter". The pattern of leap year intervals is simply an observation made after-the-fact. Nevertheless, its recognition does lead to the prediction of other longer and shorter leap cycles.

This Microsoft Excel "Leap Week Cycles" spreadsheet 44KB shows the grouping of leap year interval sub-cycles for all of the fixed arithmetic leap week cycles presented below, and more. (If you don't have that a compatible program then you can click here to download the free Microsoft Excel Viewer 2003 for Windows.) In particular, compare the ratios of the 62-year sub-cycles and 45-year sub-cycles for various leap cycles.

Similarly, this "Leap Day Cycles" spreadsheet 32KB shows the grouping of leap year interval sub-cycles for the leap day cycles that correspond to the leap week cycles presented here (those that have the same calendar mean year length). Leap day calendar cycles are associated with a greater variety of sub-cycle sizes.

Astronomical leap rules (actual, mean, or approximation) also employ a mix of 6- and 5-year intervals between leap weeks, but that mixture varies over the years, so it is not possible group their leap year intervals into simple repeating patterns. Nevertheless, it is easy to find many instances of 17-, 11-, 62- and 45-year sub-cycles in their leap year lists.


Linear Approximation Progressive Leap Rules

In addition to astronomical and simple fixed arithmetic leap cycles, on this page are presented several fixed arithmetic progressive leap rules that employ linear approximations to the changing year lengths for the mean Northward Equinox (LANEY), mean North Solstice (LANSY), mean Southward Equinox (LASEY), mean South Solstice (LASSY), and mean Besselian Year (LABY), respectively.

With respect to a target equinox or solstice, over the range of years for which such a leap rule is valid linear approximation progressive leap rules provide accuracy approaching that of astronomical algorithms, yet they employ very simple arithmetic. In cases where a simple fixed arithmetic leap rule provides acceptable accuracy, however, there is obviously no point in using linear approximation.

Each progressive leap rule is based on 3 linear segments representing eras that are each typically 10 millennia in duration:

For example, this chart depicts the linear approximation of the LASSY leap rule 125KB. The "+" symbols shown the duration of the astronomical south solstitial year, with inherent scatter due to variability of the underlying astronomy. The red line plots the 3-segment linear approximation. One can fit the approximation by simply drawing on the chart and judging the goodness of fit by eye, or one could employ linear regression for the diagonal segment. (It is difficult to use linear regression for the first and third segments because they must be constrained to have zero slope.)

Simply by integrating the area under these 3 segments over the range from the calendar epoch backward or forward to the target year number, the linear approximation arithmetic can compute the New Year Moment for any desired year, in terms of the number of days and fraction of a day elapsed relative to the specified epoch.

In the present era the southward equinoctial mean year and the south solstitial mean year are changing too rapidly for use with any simple fixed arithmetic calendar leap cycle, as shown in chart #3 of my "Lengths of the Seasons" web page at <http://www.sym454.org/seasons/>. The LASEY and LASSY linear approximation progressive leap rules, however, offer an excellent yet simple fixed arithmetic fit. In fact, in the present era LASEY and LASSY can parallel the southward equinox and south solstice, respectively, more accurately than any simple fixed arithmetic cycle can parallel the northward equinox or north solstice, even though the latter two presently have almost constant mean years.

One can judge the goodness of the approximation by plotting when the target equinox or solstice occurs on a calendar that is based on that leap rule. For example, this chart shows the performance of the Symmetry454 calendar with LASSY leap rule, relative to the south solstice 19KB. In this case, the goodness of fit is obviously almost as good as using a mean astronomical leap rule, at least for the range of years shown. There is a small amount of curvature near the ends of the range of years, whereas a mean astronomical leap rule would yield a perfectly straight band with monotonously spaced plotted points.

The linear approximation arithmetic inherently distributes leap years at intervals that are as smoothly spread as possible. Its algorithm transparently ensures a smooth transition through the switchover points between the line segments, automatically avoiding exceptionally short or long leap year intervals as well as avoiding "glitches" away from the intended equinox/solstice alignment at the line segment "elbows", without needing explicit logic to check for or handle those transitions.

For a leap day calendar, floor or round the New Year Moment to yield the New Year Day, then that year has a leap day if the next New Year Day is >365 days away (365 or 366 days are the only possible year lengths). Leap years will be at intervals of 4 or 5 years, as smoothly spread as possible.

For a leap week calendar that always starts its calendar year on a certain "start on" weekday, floor or round the New Year Moment and find the nearest "start on" weekday, then that year has a leap week if the next New Year Day is >364 days away (364 or 371 days are the only possible year lengths). Leap years will be at intervals of 6 or 5 years, as smoothly spread as possible.

Click here for liberally commented algorithm source code for Linear Approximation Progressive Leap Rules (generated in Microsoft Visual Basic 6).

[ If using viewing with a text editor, don't allow line wrapping, otherwise it will be very hard to read. ]

Belgian astronomer / retired meteorologist Jean Meeus, author of several books about astronomical algorithms, wrote about the futility of designing calendar leap cycles to carry a calendar more than a few millennia into the future, explaining that the uncertainties of the underlying astronomical algorithms and Delta T approximation, and the partial unpredictability of future changes in the Earth rotation rate limit the range of years that can be accurately projected. I have attempted to estimate the uncertainty of Delta T through the following charts:

Click here for charts of the effect of varying Delta T on mean equinoctial and solstitial year lengths 202KB.

Click here for charts of the effect of varying Delta T on the LANEY, LANSY, LASEY, and LASSY leap rules 140KB.

See also the section "Dynamic Demonstration of Mean Solar Calendar Drift Rates", below, which includes an Excel spreadsheet with macro that dynamically demonstrates the astronomical drift of a variety of fixed arithmetic leap cycles in comparison with these linear approximation leap rules, showing that the latter indeed have minimal astronomical drift over their intended range of years. That spreadsheet allows the user to experiment with a range of Delta T multipliers to see the effect of various Earth rotation slowdown rates.

In much of the second half of this century, the northward equinox will land on Gregorian March 19th. Thus the Gregorian calendar will have drifted 2 days late relative to its design objective of keeping the equinox on March 21st. Obviously a two-day drift is not considered objectionable (yet), otherwise there would be a major international push for reform of the Gregorian calendar. With that in mind, and allowing for up to 2 days of drift due to uncertainty of the future value of Delta T, any of the linear approximation leap rules ought to be acceptable for well in excess of 10 millennia.

Although in theory these Linear Approximation progressive leap rules could carry a calendar as far as 30 millennia into the future, I don't claim that they indeed will be accurate for so long. Rather my purpose in presenting these leap rules is to define a method that could in the future be refined to the necessary accuracy (before the starting and ending years of the Linear Approximation region), when superior astronomical algorithms and Delta T approximation will be available and the changes in Earth rotation rate will be better understood. Nevertheless, even without such refinement the linear approximation leap rules will give a far better fit to future solar cycles than would any fixed arithmetic leap cycle if it were continued for such a long time.

The leap year intervals during the starting horizontal line segment could be made to match any desired calendar that also has smoothly spread leap years, by using the same epoch and starting calendar mean year. For example, the Dee calendar inherently has smoothly spread leap years at 4- or 5-year intervals, so starting LANEY with a mean year of 365+8/33 days could, with the appropriate epoch offset value, be made to match the Dee leap years, until the start of the sloped linear approximation era. By contrast, the Gregorian and Revised Julian calendars have leap years at intervals which are not smoothly spread, that is every 4 years except for certain centurial years. Therefore even if one started with a matching mean year of 365+97/400 days or 365+109/450 days, respectively, the LANEY leap year intervals would not perfectly match those of the Gregorian or Revised Julian calendar.


Smoothly Spread Symmetrical Leap Cycles

Every fixed arithmetic leap cycle has a calendar mean year that is calculable as explained in the "Basic Leap Cycle Calculations" section above. In a typical solar calendar application, the leap cycle and hence the calendar mean year is chosen to approximate a selected equinotical or solstitial mean year, which for the present era is usually either the northward equinoctial or the north solstitial mean year, due to their current astronomical stability, as explained on my "Lengths of the Seasons" web page at <http://www.sym454.org/seasons/>. Astronomical evaluations of the long-term drift of a variety of leap cycles are a useful guide to help make the optimal choice.

One way to carry out such a drift analysis is to determine the date and time of day of the target equinox or solstice in each year, and plot that raw data as a function of the calendar year number. A curve can be statistically fitted to the points, for example by using non-linear least-squares polynomial regression, but if the analysis spans many millennia then the trend probably won't parallel a simple monotonic curve, the calculation will take a long time to complete, and the resulting polynomial may not look like a particularly good fit.

Such astronomical analyses can be greatly simplified by choosing a single year for evaluating the timing of the mean equinox or solstice in each cycle, then interpolating from cycle-to-cycle. This always yields the mean equinox or solstice drift relative to its position at the epoch of the calendar (the day upon which calendar year 1 started), but it won't yield the average position in each cycle unless care is taken to choose the year that is always at the average or closest to the average.

If a leap cycle is arranged such that the list of leap years is symmetrical, so that year n of each cycle has the same leap status as the symmetrical year occurring n years before the first year of the next cycle, then the start of the first year of every cycle will always be at the average for that cycle. In other words, such a leap cycle contains an odd number of years C where each pair of mirror image years (1,C), (2,C-1), ... (Y,C-Y+1) has either both years non-leap or both years leap. The key property of such a symmetrical cycle is that the first calendar year starts at the same moment as the first mean calendar New Year Moment, and thereafter the first year of each cycle starts at the calendar mean New Year Moment given by epoch + ElapsedYears × CalendarMeanYear. This symmetrical arrangement can simplify choosing the calendar epoch, because it causes the timing of the target mean equinox or solstice to fall at the cycle average in the first year of every cycle. Furthermore, to carry out long-term astronomical drift analysis of a symmetrical leap cycle it is only necessary to evaluate the first year of each cycle, then interpolate from cycle-to-cycle.

This symmetrical leap cycle concept, rules, and arithmetic are largely due to K.E.V. (Karl) Palmen of the Rutherford Appleton Laboratory in the United Kingdom, primarily based on correspondence with the CALNDR LISTSERV during 2007-2010, in threads concerned with what he called 'Helios' and 'quasi-Helios' cycles.

Smoothly spread symmetrical leap cycles can be applied to leap day, leap week, or leap month calendars, where leap weeks or months can be of any length as appropriate to the calendar structure. Hereinafter, the term leap unit refers generically to the leap day, week, or month, as appropriate to the calendar design, where X = the number of days in the leap unit that in leap years is appended to the end of the calendar year or is inserted somewhere after the target equinox or solstice.

If instead the leap unit is inserted at any position that is prior to the target equinox or solstice within the calendar year then the timing of the mean equinox or solstice instead will fall at the cycle average in the last year of every cycle.

This discussion will be limited to fixed arithmetic leap cycles that are not a repetition of a shorter cycle, and in which the intervals between leap years are as smoothly spread as possible so as to minimize the medium-term "jitter" of any mean astronomical equinox or solstice that the calendar is intended to target.

Some additional definitions and properties that are relevant to such smoothly spread symmetrical leap cycles include:

  1. There are an odd number of years per cycle.
  2. The middle year of each cycle is a leap year only if there are an odd number of leap years per cycle.
  3. Accumulator = modulus(L × Y + K , C), where L = the number of leap years per cycle, Y = the given year number, C = the number of years per cycle, and K = (C – 1) / 2, which is the only value of K that yields a perfectly symmetrical cycle. C must be an odd integer so that K is an integer.
  4. The given year is a leap year if and only if its accumulator is < L.
  5. Restating the leap year symmetry in terms of accumulator arithmetic:
    the accumulator of year Cn+1 is < L only if the accumulator of the symmetrical year n is < L, and the sum of any two such years' accumulators is L – 1 (+ C if they are not leap years), where n is the year number within the cycle, ranging numerically from 1 to C.
  6. Restating the cycle symmetry in terms of year lengths:
    LengthOfYear(Y) = LengthOfYear(C+1–Y), where year Y=1 is the first year of the first cycle.
  7. Restating the cycle symmetry in terms of year starts:
    StartOfYear(C+1) – StartOfYear(C+1–Y) = StartOfYear(Y+1) – StartOfYear(1).
    Proof: If StartDifference(Y) = MeanStartOfYear(Y) – StartOfYear(Y) then due to symmetry
    [StartDifference(X–1) – StartDifference(1)] + [StartDifference(C+1–X) – StartDifference(1)] = 0
    Therefore both StartDifference(Y) and [StartDifference(Y) – StartDifference(1)] must add up to 0 for Y over the whole cycle, and therefore StartDifference(1) = 0.
  8. The minimum accumulator = 0, the average accumulator exactly equals K, and the maximum accumulator = C – 1.
  9. There are two possible intervals between leap years: S and S + 1 years, where S includes one leap year. In the case of leap day calendars S = 4, for leap week calendars S = 5. In the general case, S = floor( C / L ).
  10. Let R = CL × S. This is the number of longer (S + 1 years) inter-leap intervals per cycle.
  11. The number of shorter (S years) inter-leap intervals per cycle = LR.
  12. If S is odd then each cycle begins and ends with (S–1)/2 non-leap years (making the last inter-leap interval per cycle equal to S years), otherwise each cycle begins and ends with S/2 non-leap years (making the last inter-leap interval per cycle equal to S+1 years).
  13. If the accumulator for a given leap year is < R then the next leap year will be S + 1 years later, otherwise the next leap year will be S years later. This is useful for logical efficiency when generating a list of leap years.
  14. U = the unique modular (multiplicative) inverse of integers L and C, which must be mutually coprime (greatest common divisor = 1), so modulus( L × U , C ) = 1.

    See: <http://mathworld.wolfram.com/ModularInverse.html>.
    The modular inverse can be computed in Mathematica using the expression PowerMod[ L, -1, C ].
    See also the following Wikipedia page, and follow its links to the extended euclidean algorithm: <http://en.wikipedia.org/wiki/Modular_multiplicative_inverse>.

    Click here to download a text file containing an iterative Visual Basic implementation of the modular inverse algorithm. This Microsoft Excel "Demonstration of Modular Inverse Function Calls" spreadsheet 62KB uses that algorithm verbatim as a VBA (Visual Basic for Applications) macro to calculate the modular inverse for a variety of leap day, leap week, and 19- or 30-day leap month calendar cycles.

    If U doesn't exist then L and C are not mutually coprime and the cycle contains one or more repetitions of a shorter cycle, to which it must be reduced.

  15. The year having the maximum accumulator = C – 1 is always year modulus( U × ( C – 1 ) / 2 , C ) of each cycle.
  16. The year having the minimum accumulator = 0 always occurs U years later and is year modulus( U × ( C + 1 ) / 2 , C ) of each cycle.
  17. For the minimum and maximum accumulator years, their two year numbers in the cycle add up to C, they are not a symmetrical pair, and exactly one is a leap year.
  18. The accumulator of year 0 (the year before the start of each cycle) or year C (the last year of each cycle) = ( C – 1 ) / 2 = K.
  19. Let M = floor( CalendarMeanYear ). For Earth, M = 365 days for all solar and lunisolar calendar types; for Mars M = 668 sols for all solar calendar types.
  20. New Year Moment = epoch + M × (Y – 1) + F × (Y – 1), where epoch is the start of calendar year 1, Y is the given year number, and F is the fraction of the calendar mean year that is in excess of M. As usual, this expression must not be simplified to epoch + (Y – 1) × (M + F) unless the calculation is exact (arbitrary precision).
  21. It is simpler to use the elapsed year count E = Y – 1, in which case the New Year Moment = epoch + M × E + F × E. As above, this expression must not be simplified to epoch + E × (M + F) unless the calculation is exact (arbitrary precision).
  22. Although the mean New Year Moment expression would be the same for a non-symmetrical leap cycle, only in the case of a symmetrical leap cycle does it exactly equal the start of calendar year 1 and the start of the first year of every cycle.
  23. Any given year Y begins on day epoch + D × (Y – 1) + X × floor( [ L × (Y – 1) + K ] / C ), where D = the number of days in a non-leap year, X = the number of days in a leap unit, and a leap year has D + X days. Starting from the calendar epoch, this expression adds the non-leap calendar year length for each elapsed year and then adds the length of the leap unit for each elapsed leap year.
  24. It is simpler to use the elapsed year count E = Y – 1, in which case year Y begins on day epoch + D × E + X × floor( [L × E + K] / C ).
  25. To evaluate the long-term astronomical drift of the earliest and latest mean equinox or solstice within the calendar year it is only necessary to check the year after the year that has the minimum accumulator = 0 and the year CU years later that is the year after the year that has the maximum accumulator = C – 1 in each cycle, respectively, interpolating from cycle-to-cycle.
  26. The maximum within-cycle "jitter" or "wobble" W of the mean equinox or solstice or New Year Moment is ± X × (C – 1) / (2×C) days, where X = the number of days in the calendar leap unit, provided that the leap year intervals are as smoothly spread as possible, so the drift of the earliest and latest mean equinox or solstice can simply be plotted as ±W days from the drift of the average, where the average is represented by the first year of each leap cycle, interpolating from cycle-to-cycle.

A short cycle is convenient to illustrate such a symmetrical leap cycle. For example, the following line shows the leap status for each year of the symmetrical 45-year leap week cycle (D=364, X=7, D+X=371), having leap intervals of 6 or 5 years, using K = (C – 1) / 2 = 22, where the 37 non-leap years are indicated by '0' digits and the 8 leap years are indicated by '1' digits. A space is inserted beside each leap year to make it easier to discern the symmetrical sequence of leap years. This odd-length cycle is fully symmetrical, and because there are an even number of leap years in the cycle it has a non-leap middle year, as highlighted in boldface:

001 000001 000001 00001 00000 10000 100000 100000 100

For all leap week calendars the inter-leap interval is 6 or 5 years, so the shorter inter-leap interval S = 5 is an odd number. Therefore each cycle begins and ends with (S–1)/2 = 2 non-leap years.

A property of symmetrical cycles is that they may contain smaller symmetrical sub-cycles, which can be seen by inserting a gap at the middle of each even-numbered sequence of non-leap years between leap years, as shown next for the 45-year leap week cycle:

00100000100000100 00100000100 00100000100000100 = 17+11+17 = 45

The 45-year cycle could have been useful in the past, but its mean year ≡ 365+11/45 days ≡ 365d 5h 52m 0s ≡ 365.2444... days, which is too long for the present era and future. Nevertheless, its short cycle length is useful for illustrating the principles of smoothly spread symmetrical leap cycles. Click here to view 2 graphs depicting the symmetrical accumulator and New Year Moment variations for the 45-year leap week cycle 25KB. The second-page accumulator chart shows that all leap years have an accumulator <8 and those leap years that have an accumulator <5 mark the 5 leap years that begin a 6-year inter-leap interval, with the other 3 leap years beginning a 5-year inter-leap interval.

If we change this leap cycle to a 45-year leap day cycle (D=365, X=1, D+X=366), then the inter-leap intervals become 4 or 5 years with 11 leap years per cycle, and because of the odd number of leap years the middle year of the cycle will be a leap year. All of the leap years begin 4-year inter-leap intervals except for 5-year interval begun by the last leap year in each cycle, whose non-leap years are split equally 2+2 between the ending cycle and the next cycle:

001 0001 0001 0001 0001 000 1 000 1000 1000 1000 1000 100

For all leap day calendars the inter-leap interval is 4 or 5 years, so the shorter inter-leap interval S = 4 is an even number. Therefore each cycle begins and ends with S/2 = 2 non-leap years.

As a longer example, the symmetrical sub-cycles of the symmetrical 293-year leap week cycle are:

17+11+17 + 17+17+11+17+17 + 17+11+17 + 17+17+11+17+17 + 17+11+17 = 45+79+45+79+45 = 293

If there were a ritual or political reason to align the average equinox or solstice relative to a particular meridian in a certain era, then K could be adjusted to fine tune that alignment, but the adjusted leap cycle would be non-symmetrical. U is the smallest number such that the accumulator of year Y + U is one greater modulus C than the accumulator of year Y, and hence the New Year Moment of year Y + U is 1/C of a leap unit later than that of year Y. Each increment of K advances the leap cycle by U years. If C-U has a smaller absolute value than U then that could be more useful for incremental adjustments, for example in the Dee leap day cycle C=33, L=8, U=29 but C-U=4.

Leap cycles that have an even number of years per cycle as well as an even number of leap years per cycle (such as the Revised Julian calendar, which has 218 leap days in 900 years) need to be reduced to a shorter cycle (109 leap days in 450 years for the example given).

Leap cycles that have an even number of years per cycle and an odd number of leap years per cycle can't be perfectly symmetrical, but will be almost symmetrical. If K = C/2 then the sum of any two symmetrical years' accumulators is L (+ C if they are not leap years), year K has the minimum accumulator = 0, year modulus(KU, C) has the maximum accumulator C-1, the accumulators of the middle two years are 0 and L, respectively, and the only non-symmetry is that year C/2 is leap but year C/2+1 is non-leap. If on the other hand K = C/2–1 then the sum of any two symmetrical years' accumulators is L-2 (+ C if they are not leap years), year U-K-1 has the minimum accumulator = 0, year K+1 has the maximum accumulator C-1, the accumulators of the middle two years are C-1 and L-1, respectively, and the only non-symmetry is that year C/2 is non-leap but year C/2+1 is leap. With either K value the two middle years must differ in leap status and the accumulator of year 0 or C is K. There is no year in which the New Year Moment or mean equinox or solstice falls exactly at the cycle average, but year 1 of each cycle is one of the two jointly closest years, deviating by only X/(2×C).

For example, the following line shows the leap status for each year of the almost symmetrical 62-year leap week cycle, having leap intervals of 6 or 5 years, using K = C/2 = 31, where the 51 non-leap years are indicated by '0' digits and the 11 leap years are indicated by '1' digits. A space is inserted beside each leap year to make it easier to discern the symmetrical sequence of leap years. Four non-leap years of a 5-year interval are split between the beginning and end of the cycle. This even-length cycle is symmetrical except that its middle two years differ in leap status. The 31st year of every cycle is a leap year, but the 32nd year of every cycle is a non-leap year, as highlighted in boldface:

001 000001 000001 00001 000001 0000 10 0000 100000 10000 100000 100000 100

The symmetrical sub-cycles are:

00100000100000100 00100000100 00100000100000100 00100000100000100 = 17+11+17+17 = 45+17 = 62

The above example illustrates the general principle that every almost symmetrical cycle is identical to some combination of perfectly symmetrical sub-cycles, such as the symmetrical 45- and 17-year sub-cycles of the 62-year leap cycle.

Changing K to the alternative value C/2-1 = 30 produces an identical sequence of non-leap and leap years except that the middle two years are reversed: the 31st year of every cycle is a non-leap year, but the 32nd year of every cycle is a leap year, as highlighted in boldface:

001 000001 000001 00001 000001 0000 01 0000 100000 10000 100000 100000 100

The symmetrical sub-cycles, with the middle two reversed from the above, are:

00100000100000100 00100000100000100 00100000100 00100000100000100 = 17+17+11+17 = 17+45 = 62

The following line shows the almost symmetrical 62-year leap day cycle, having leap intervals of 4 or 5 years with K = 31, showing the almost symmetrical arrangement of its 47 non-leap and 15 leap years. Again, four non-leap years of a 5-year interval are split between the beginning and end of the cycle, and the 31st year of every cycle is a leap year, but the 32nd year of every cycle is a non-leap year:

001 0001 0001 0001 0001 0001 0001 000 10 000 1000 1000 1000 1000 1000 1000 100

As a more extreme example, the 3150-year almost symmetrical cycle having 559 leap weeks with K = C/2 = 1575 is identical to nearly alternating perfectly symmetrical sub-cycles of 417 years having 74 leap weeks and 355 years having 63 leap weeks in the sequence:

417+355+417+355+417+417+355+417 = 3150

Using the alternative K = C/2-1 = 1574 yields the same symmetrical sub-cycles but arranged in the reverse sequence:

417+355+417+417+355+417+355+417 = 3150

The detailed tables below give K and U for those fixed arithmetic leap cycles that can be made symmetrical or almost symmetrical.


Dynamic Demonstration of Mean Solar Calendar Drift Rates

I used SOLEX version 9.1 (home page at <http://main.chemistry.unina.it/~alvitagl/solex/>) to calculate numerically integrated Terrestrial Time moments of each equinox and solstice for each century from 4000 BC to 12000 AD, using that data together with polynomial expressions for approximating Delta T as published in January 2007 by Fred Espenak and Jean Meeus at the NASA Eclipses web site at <http://eclipse.gsfc.nasa.gov/SEcat5/deltatpoly.html> to create a VBA (Visual Basic for Applications) macro that dynamically calculates the solar calendar leap cycle drift rates of many of the leap rules discussed here, relative to the appropriate equinox or solstice and a user-specified zero reference year (epoch), displaying the results graphically. The user can change the list of leap cycles, and can enter or shift the epoch year independently for each equinox or solstice. The user can also optionally alter a Delta T multiplier to graphically see the effect of the Earth rotation rate tidally slowing down more or less gradually than it has in the recent past.

Click here to download the "Solar Calendar Drift" spreadsheet 353KB

Click here to see the default built-in charts of the "Solar Calendar Drift" spreadsheet 141KB (4 pages)

In order for the macro to run, you must have the full version of Excel, it won't run in the Excel Viewer environment. In addition, your Excel security settings must allow the macro to run, with or without your confirmation, as you prefer. To enable macros, use the Excel "Tools" menu, choose "Macro", then over to "Security...", then choose the desired macro security level.


Automatic Fixed Leap Cycle Finder

Given any minimum and maximum calendar mean year, length of short years (non-leap), length of long years (leap), and the maximum allowable number of years per cycle, it is possible to list all compatible fixed arithmetic leap cycles, simply by computing all possible combinations. That is the strategy employed by the Visual Basic macro in this Excel spreadsheet:

Click here to download the "Fixed Leap Cycle Finder" spreadsheet 390KB

Click here to see an example report generated by the "Fixed Leap Cycle Finder" spreadsheet 18KB

Your Excel macro security settings must be enabled to allow the macro to run, as explained at the end of the previous section.

The spreadsheet allows entry of a target year number, for which it calculates the mean equinoctial and solstitial years (and their rate of change in terms of seconds per century), as well as the mean lunar month lengths. While it is generating the list of leap cycles, the macro color-highlights the cycles that best fit each of the mean equinoctial and solstitial year lengths. Since a good fit to a year length that is changing by more than a second per century may not be particularly useful (use the Solar Calendar Drift spreadsheet above to evaluate the long-term calendar drift), where overlaps occur precedence is given to stable equinoctial or solstitial years.

After generating the list of leap cycles the macro sorts the list in descending order by calendar mean year, highlights saros and lunar month counts that are near integers, sets up the first and last listed cycles as short "mixer" cycles that have fewer years per cycle than the shortest cycle within the specified mean year range and having mean years equal to or closest to the specified range, then it calculates the proportion of short mixer cycles that comprise each within-range leap cycle.

Optionally, the user can specify that the number of years per listed cycle must be divisible by a specified number. For example, the user could enter 100 as the "divisible by" value to cause all listed within-range cycles to be whole centuries in length, although obviously for this example only a few cycles will qualify.

Optionally, the user can specify that the cycle mean year must comprise a whole number of a specified fraction of a day. When this option is enabled the maximum number of years per cycle is ignored, so all qualifying cycles will be found. For example:

The user can specify the number of days per week, initially set to 7 days.

A checkbox option allows the user to exclude or allow generation of simple leap cycle repeats. The list will be shorter if repeated cycles are excluded, but in some cases repeated cycles may be useful to obtain near integer counts of lunar months, if desired, or round counts for the number of years per cycle.

A unique feature of this spreadsheet is its ability to calculate leap cycle mean years to exact fractions, both in terms of days and in terms of hours minutes and seconds in excess of 365 days, but this is only possible if the specified year lengths are integers (as is usually the case).

Although preset to find cycles that are compatible with perpetual leap week calendars, the spreadsheet is intended as a general-purpose leap cycle finder for any kind of fixed arithmetic calendar. The number of days per year need not be integers, and can be any valid Excel expressions. The following table lists examples of useful settings for a few calendar types:

Calendar Type Short Year Length Long Year Length
Days Months Days Months
leap day 365 12 366 12
leap week (7 days per week, perpetual) =52*7 12 =53*7 12
leap month, all months = 28 days (perpetual) =13*28 13 =14*28 14
leap month, all months = 35 days (perpetual) =10*35 10 =11*35 11
leap month, all months = 30 days =12*30 12 =13*30 13
leap month, all months = 19 days =19*19 19 =20*19 20
leap month, lunisolar =12*Synodic 12 =13*Synodic 13
leap month, lunisolar, fixed mean month =12*FMM 12 =13*FMM 13
hex week (long years most common) 360 12 366 12

Buttons are provided to help set up the desired calendar type:

The preset default fixed mean month (FMM) expression is for 29 + 12/24 + 44/1440 + (2+62/89)/86400 days = 29 days 12 hours 44 minutes and 2+62/89 seconds, corresponding to a 49-yerm fixed cycle containing 376 deficient (29-day) and 425 full (30-day) months, which is a good choice for the present millennium. If you prefer a 52-yerm fixed cycle containing 399 deficient and 451 full months, then change the seconds portion of the expression to (2+14/17).

The spreadsheet also contains macro functions for calculation of Continued Fractions (see the "Ratios" worksheet) and calculation of integer Divisors with optional indication as to which divisors are prime numbers (see the "Divisors" worksheet), for further characterization of candidate leap cycles. Where the target numerator and denominator for a continued fraction approximation are both integers, the "Ratios" worksheet shows examples of a novel method for indicating the exact fractional error for each convergent, which can be useful in developing simple leap rules with periodic corrections.


Mediant Fractions, Farey Pairs, and Ford Circles

Fixed Leap Cycle Finder uses the "brute force" method to find leap cycles within a specified target mean year range, that is it finds cycles by arithmetically testing all possible permutations and combinations of leap years per cycle and years per cycle up to the specified maximum number of years per cycle. It is surprisingly fast, considering that most of the cycles that it tests are actually discarded because their mean year falls outside the target range. An alternative, much more elegant and efficient method to find leap cycles is the mediant fraction method:

For any given fractions a/c and b/d, their mediant fraction is (a+b) / (c+d), that is the sum of their numerators divided by the sum of their denominators.

A sequence of such fractions, generated for example starting from 0/1 and 1/1 and including fractions up to a specified maximum denominator, is known as an nth order Farey sequence, where n is the maximum denominator, even though the British geologist John Farey, Sr. himself only mentioned the mediant fraction arithmetic briefly in a letter published in Philosophical Magazine in 1816. Charles Haros was the French mathematician who originally published the mediant fraction method in 1801. Haros was charged with producing a list of all fractions having denominators less than 100 (there are 3003 such fractions) along with their decimal equivalents, because at the time France was in the process of switching from using fractional to decimal denominations.

Any fractions a/c and b/d are nth order Farey sequence neighbours if bc – ad = 1. If so, then all fractions between them having lower or higher denominators can be generated using the mediant fraction method. Cycles corresponding to such fractions are the same as the "mixer" cycles that Fixed Leap Cycle Finder reports. The mediant fraction method is very useful for finding all possible leap cycles within a target mean year range. One need only find the Farey sequence neighbours that are closest to the target mean year range, then calculate all of the mediant fractions between them up to a specified maximum denominator.

For lunar calendars the cycle fraction is the number of full months per cycle divided by the number of months per cycle. A 17-month yerm is composed of alternating full (30 day) and deficient (29 day) months in the pattern FDFDFDFDFDFDFDFDF, having a mean month of 29+9/17 days = 29 days 12 hours 42 minutes and 21+3/17 seconds. A 15-month yerm drops one FD pair = FDFDFDFDFDFDFDF, which has a mean month of 29+8/15 days = 29 days 12 hours and exactly 48 minutes. For fixed arithmetic lunar cycles the appropriate long mean month mixer to use is 29/49, which is the same as the most common 49-month lunar subcycle, containing only 3 yerms of 17+17+15 months respectively, having a mean month of 29+29/49 days = 29 days 12 hours 44 minutes and 4+44/49 seconds, and the appropriate short mean month mixer to use is 9/17, which contains only one 17-month yerm. For more information see the yerm concept and calendar as defined by Karl Palmen at ''Yerm Lunar Calendar'' <http://www.hermetic.ch/cal_stud/palmen/yerm1.htm>.

For other types of calendar cycles, to find the mixer cycles we need only execute a loop, where MaxLimit and MinLimit are the longest and shortest mean year fractions for our desired list of leap cycles. For lunar cycles these limits are directly ready to use, but for solar and lunisolar cycles convert them to the minimum and maximum allowable cycle fraction, numerator / denominator, which corresponds to the inverse of the average interval between leap or skip years:

IF CycleType = Lunar THEN

MinCycleFraction = MinLimit

MaxCycleFraction = MaxLimit

ELSE IF DaysPerLeap < 0 THEN ' skip short

YearLessNominal = LengthOfLongYearfloor( MeanYear )

DaysPerSkip = DaysPerLeap

MinCycleFraction = (MaxLimitYearLessNominal) / DaysPerSkip

MaxCycleFraction = (MinLimitYearLessNominal) / DaysPerSkip

ELSE ' leap long

YearLessNominal = LengthOfShortYearfloor( MeanYear )

MinCycleFraction = (MinLimitYearLessNominal) / DaysPerLeap

MaxCycleFraction = (MaxLimitYearLessNominal) / DaysPerLeap

END IF

Start the following loop with the long mixer initiated to a one-year cycle in which every year is long and the short mixer initiated a one year cycle in which every year is short by setting the starting mixers to 1/1 and 0/1, respectively.

DO

numerator = sum of mixer numerators
denominator = sum of mixer denominators

(Because we are building up the mediants starting from 1/1 and 0/1 and will stop before the denominator gets particularly high, there is never any need to reduce the mediant while looping to find the mixer cycles. For some calendar types the loop may approach 30 iterations.)

Calculate the simple ratio of numerator to denominator. For lunar cycles this represents the ratio of full months to the total number of months per cycle. For solar and lunisolar cycles it represents the inverse of the average leap or skip year interval. Either way the arithmetic is the same.

CycleFraction = numerator / denominator

IF CycleFraction >= MaxCycleFraction THEN

Long mixer is too long, change it to numerator / denominator

ELSEIF CycleFraction <= MinCycleFraction THEN

Short mixer is too short, change it to numerator / denominator

END IF

LOOP UNTIL CycleFraction >= MaxCycleFraction AND CycleFraction <= MinCycleFraction

The loop exits as soon as it finds a mediant fraction within the target range.

Before using the mixer cycles, if the calendar type employs skip short cycles then swap the mixers.

The above algorithm for finding the mixer cycles is courtesy of K.E.V. (Karl) Palmen of the Rutherford Appleton Laboratory in the United Kingdom, based on correspondence with the CALNDR LISTSERV during Janary 2011. It was also Karl's prompting in October 2010 that got the Ford circles spreadsheet started (but not until December 2010, see below), and he provided critically helpful guidance at several points during that project.

After finding appropriate mixer cycles, the following loops can calculate all of the desired mediant fractions that are within the target range, up to the specified maximum denominator. The loop will discard a few fractions that are outside the target range, depending on how far away the mixer cycles are from the target range. Provided that the loop starts with appropriate mixer cycles, none of the generated mediant fractions need to be reduced.

The mediant fraction method inherently inserts each generated fractions in its proper position in the sequence, sorted descending by the cycle mean year (or month). The algorithm as written below requires that the starting mixers must be arranged in descending mean year (or month) order.

The mediant fraction generation algorithm shown next checks whether each mediant fraction is within the target range, based upon the simple cycle fraction. This is optional because, depending on the programming environment, it may be more efficient to insert all mediants whose denominator is not beyond the maximum, and then either keep all of the generated fractions or discard the out-of-range fractions after the generation phase is complete. To keep all of the fractions, omit all statements concerning the CycleFraction or the in-range row numbers, highlighted in brown, like this paragraph.

For best performance, I suggest implementing the list of cycles as a doubly-linked list in memory, containing the following fields:

When "inserting" a cycle into such a list, no previously generated entries are moved, the new entry is simply appended to the list and linked into the current working position in the list. In a computer programming language such as C, each element of the list will probably be allocated as needed. In a language like BASIC, it will be more efficient to dimension an array that is large enough to hold the longest desired list (like 4000 elements, if memory permits), or check the MediantCount as the list grows, and when necessary redimension the array larger by a good chunk (like 1000 elements), preserving its contents.

Starting with an empty list, put the long mixer into the first row of the list and the short mixer in the second row of the list, marking them both as 0th order, then put their first mediant into the third row of the list, marking it as first order and linking it appropriately between the first and second rows. Initialize MediantCount = 3 and nthOrderNumber = 1 to indicate that the list is starting with these 3 fractions already in place and that nth orders 0 and 1 have already been used.

As the algorithm executes, it will track the first and last in-range row numbers. If the mixers were appropriately selected as per the algorithm above, then by definition the first mediant must be within the target range, so initialize the first and last in-range row numbers to point to that first mediant fraction.

FirstInRangeRow = 3

LastInRangeRow = 3

DO (begin outer loop, which repeatedly executes the inner loop until no more cycles are inserted)

Clear the InsertedCycles counter to zero. The inner loop will increment this count whenever a within-range cycle is inserted, and this outer loop will exit when it finds that the count is still zero after the inner loop exits.

Increment the nthOrderNumber.

acRow = Mediants(FirstInRangeRow).PrevCycle

Get set up for the first mediant fraction calculation of the next pass through the inner loop.
It is impossible to have already reached the end of the list at this point.

Assign variables "a" and "c" equal to the numerator and denominator of the mediant at acRow, respectively.

bdRow = Mediants(FirstInRangeRow).NextCycle

Assign variables "b" and "d" equal to the numerator and denominator of the mediant at bdRow, respectively.

DO (begin inner loop, which executes a single top-down pass down the list of cycles)

Calculate the next mediant fraction. We can do the denominator first because we only need the numerator if the denominator is within the specified maximum denominator limit:

denominator = c + d

(As mentioned above, there is never any need to reduce this new mediant fraction, provided that the long and short mixer cycles were properly selected.)

IF the mediant fraction's denominator is less than or equal to the specified maximum denominator THEN

InsertedCycles = InsertedCycles + 1

Here we use MediantCount to refer to the row number of the element position that we will use for this new mediant fraction. In a language like C one would instead allocate a new element in memory and track its memory address.

MediantCount = MediantCount + 1

At this point, if allocating list elements individually then do so, or if allocating the list in chunks than check if it is necessary to expand the list, and so then allocate another chunk.

numerator = a + b

Calculate the simple ratio of numerator to denominator:

CycleFraction = numerator / denominator

(For non-lunar cycles, the inverse ratio denominator / numerator is simply the average number of years between leap or skip years. For lunar cycles, numerator is the number of full 30-day months per cycle and denominator is the total number of months per cycle.)

The following IF ... THEN expression eliminates out-of-range cycles from further consideration, except those that are just outside, to avoid wasting computation time. If there are no in-range low order cycles between the initial mixers, as occurs in the case of a leap day calendar with leap long mixers 1/4 and 0/1 or skip short mixers 3/4 and 1/1, then the algorithm will keep generating mediants oscillating around a mean year of 365.2 days, until it reaches the maximum specified denominator. Normally this is not a practical problem because 1/4 is an inappropriately long mean year fraction, and as a workaround it is easy to specify a shorter (or perhaps a longer) maximum mean year length (one second suffices). If you really must use such leap day mixers then substitute IF TRUE THEN.

IF CycleFraction >= MinCycleFraction AND CycleFraction <= MaxCycleFraction THEN

The new mediant fraction is within the target range. Remember it as the first or last in-range row if its CycleFraction is closer to either limit. The cycle fractions go in descending sequence for leap long cycles, but they go in ascending sequence for skip short cycles. It is impossible for this CycleFraction to qualify as both the first and last in range row because the only cycle that that condition can apply to is the first mediant fraction, which was generated before entry into the outer loop.

IF DaysPerLeap < 0 THEN ' solar skip short

IF CycleFraction < Mediants(FirstInRangeRow).CycleFraction THEN

FirstInRangeRow = MediantCount

ELSE IF CycleFraction > Mediants(LastInRangeRow).CycleFraction THEN

LastInRangeRow = MediantCount

END IF

ELSE ' solar leap long, or lunar

IF CycleFraction > Mediants(FirstInRangeRow).CycleFraction THEN

FirstInRangeRow = MediantCount

ELSE IF CycleFraction < Mediants(LastInRangeRow).CycleFraction THEN

LastInRangeRow = MediantCount

END IF

END IF

END IF ' within target range

Add the new mediant fraction to the list. Here we use MediantCount to access the new element of the mediant array, but in a language like C one would employ the element's memory pointer instead.

Mediants(MediantCount).nthOrderNumber = nthOrderNumber

Mediants(MediantCount).numerator = numerator

Mediants(MediantCount).denominator = denominator

Mediants(MediantCount).CycleFraction = CycleFraction

Mediants(MediantCount).PrevCycle = acRow

Mediants(MediantCount).NextCycle = bdRow

Maintain a doubly linked list by adjusting the next and previous cycle pointers of the elements before and after this new element. The new mediant becomes the next cycle for the cycle ahead of it, which has a longer mean year (or month), and becomes the previous cycle for the cycle after it, which has a shorter mean year (or month):

Mediants(acRow).NextCycle = MediantCount

Mediants(bdRow).PrevCycle = MediantCount

Optionally one can save additional information about the cycle here, if you have reserved fields for that, or can do it later after it is certain that this cycle will be kept.

END IF

Avoid wasting time inserting any mediants beyond the row after the last row that is within range. If acRow is already pointing to the LastInRangeRow then we have already used it to attempt to find a mediant that might extend the range to a shorter CycleFraction so there is no point in going any further. This is the normal way to exit from the loop, because before entering the outer loop we applied the first and last in-range row to the first mediant fraction, and therefore the last in-range row is guaranteed to exist if the starting mixers were appropriately selected as per the algorithm given above. Alternatively, if not bothering with limiting the generated mediants to only those that are within the target range, omit the following statement and the loop will terminate after the short mixer.

IF acRow = LastInRangeRow THEN EXIT DO

acRow = bdRow
bdRow = Mediants(bdRow).NextCycle

The following statement is normally never True because the outer loop always includes the first order mediant fraction, which must be an in-range cycle, hence the loop must exit at the last in-range row above, so it should never actually reach the point where bdRow = 0. Nevertheless, keep this here as a precaution to prevent an endless loop in case inappropriate starting mixers are used.

IF bdRow = 0 THEN EXIT DO ' terminate after the short mixer

Otherwise, get ready for generating the next mediant fraction:

c = d
d = Mediants(bdRow).denominator
a = b
b = Mediants(bdRow).numerator

LOOP

Execute repeated passes down the list, each time around incrementing the nthOrderNumber, until no more qualifying cycles get inserted.

LOOP UNTIL InsertedCycles = 0

Even if checking for in-range cycles is included, the algorithm above does generate a few low nth order out-of-range mediant fractions, which optionally can be discarded after it exits.

It doesn't matter what type of calendar cycle this is (leap day, leap week, leap month, lunisolar, lunar, Martian, or whatever), because if the limits are set as appropriate for the target mean year range then this method will generate only the leap cycles that are of the appropriate type. When appropriate starting mixers are selected, the above mediant fraction algorithm will find all of the possible leap cycles of the desired calendar type having a mean year (or month) within the specified target range and having denominators not exceeding the specified maximum.

In an article published in American Mathematical Monthly in 1938, Lester R. Ford, Sr. described a method to geometrically represent fractions as circles on cartesian coordinates. He set the diameter of the circle for each fraction p/q to 1/q2, in other words the radius was 1/2q2. The center of each circle was at y = the radius and x = the value of the fraction p/q. All of the circles belonging to a sequence of fractions were tangent to the x axis of the graph. If circles contacted each other then the only fractions that could exist between them were those having larger denominators. Circle intersections or overlaps were impossible. Areas subordinate to circles (between a circle and the x-axis) could only be filled by the smaller circles of fractions having larger denominators. Such a collection of circles became known as Ford circles.

When used to represent a mediant fraction sequence of leap cycles, Ford circles are an excellent way to understand why there is a paucity of short leap cycles in the vicinity of the shortest cycles. The presence of one or two short cycles in a region precludes the possibility of any other short cycles existing nearby. For example the relatively large circles of the 33- and 62-year leap day cycles force all nearby cycles to have a larger number of years per cycle, and no small cycle exists anywhere near the huge circle of the 4-year leap day cycle. As another example, for 8-day leap week cycles with denominators up to 1000 years there is only one cycle that is best for the north solstitial year and it is almost 1000-years long (648/989). In a Ford circles graph of such cycles, one can see that the next shorter mean year cycle is 19/29, which, due to its huge circle diameter, precludes the possibility of any other short cycles existing nearby.

The Ford circles chart gives a geometric meaning to mixer cycles. Two cycles are mixer cycles if and only if their circles touch and the entire target mean year (or month) fraction range doesn't extend beyond their axis contact points. All of the circles of generated mediant fraction cycles contact the axis at or between the axis contacts of the two outer mixer circles. Although all of the circles contact other circles, none of the circles intersect.

The mixer circles touch if and only if they are nth order Farey sequence neighbours, that is for mixer cycles a/c and b/d we have bc – ad = 1. If mixers that don't touch were to be used then some mediant fractions may not get generated, or may need to be reduced. The first order mediant fraction of the two appropriately selected mixer cycles is always within the specified target mean year (or month) range. Restated, only one pair of mixers has their mediant fraction in the target range, and only one pair of touching Ford circles will both touch a given Ford circle. All mediant fractions that exist between the two mixers have greater denominators than both mixers.

The Ford circles chart also gives a geometric meaning to subcycles of calendar cycles. For example, for a 7-day leap week calendar, the 293-year cycle is touched by two larger circles, having 231 and 62 years, respectively. The 62-year cycle is the modular multiplicative inverse of the 293-year cycle, and is touched by the 45- and 17-year mixers. The 231-year cycle, which is 62 years shorter than 293, is touched by the 62-year cycle and the 169-year cycle. The 169-year cycle, which is 62 years shorter than 231, is touched by the 62-year cycle and the 107-year cycle. Finally, the 107-year cycle, which is 62 years shorter than 169, is touched by the 45- and 62-year cycles. Thus the full 293-year cycle is composed of four 62-year subcycles and one 45-year subcycle. This list is easily obtained by starting with the 8/45 long mean year mixer and the 11/62 shorter mean year cycle, then generating all mediant fractions up to a denominator of 293. Such subcycles are inherently present in the 293-year cycle if the leap years are distributed at intervals that are as smoothly spread as possible.

One way to think of such Ford circle charts is that the x-axis represents the real numbers line, while the circles represent the imaginary parts of the fractions in the complex plane. Those imaginary parts can be thought of as constraining which other fractions can exist nearby.

If you are wondering what do fractions inherently have to do with circles, consider this: as n increases, the number of fractions in an nth order Farey sequence asymptotically approaches 3n2 / π2.

It is possible, although unlikely, for two fractions to have the same denominator, in which case their circles would have the same radius. This could only occur if the specified maximum and minimum mean year (or month) range was sufficiently wide to permit two such fractions to both be within that range. Its occurrence becomes progressively more likely as the specified maximum denominator is increased. The only circles of equal radius that can touch each other, however, are the circles of 1/1 and 0/1.

The following PDF charts show examples of Ford circle charts for a variety of calendar types. In each case the chart was scaled so that the cycles having good or better mean year (or month) would fit on the chart. The charts are rotated 90° from the normal orientation of a Ford circle chart, such that the real number axis is along the y-axis and all circles are tangent to the y-axis, because these charts were generated in Microsoft Excel, where such an orientation is much better for labelling the circles.

There is a grey horizontal line through the center of each circle, labelled at the left end with the decimal fraction mean year (or month) as indicated in the y-axis title. The decimal fraction corresponds to the ratio of years per cycle divided by the number of leap or skip years per cycle (in other words the inverse of the average leap or skip year interval), or for lunar calendars the ratio of full months to months per cycle. For each calendar type these fractions exist over a very narrow numeric range such that all of the possible calendar cycles of that type exist in a narrow contiguous block.

The horizontal line is labelled at the right end to identify the leap cycle and its mean year (or month), as described just above the top right corner of the chart. In certain cases a multiplier number such as "x7" will appear rightmost on that line, indicating that that cycle is that multiple of the leap day cycle that has the same mean year. For example, the 231-year 7-day leap week cycle shows "8/33 x7" rightmost on the line, indicating that it is 7 times longer than the 33-year leap cycle but has the same mean year. Where the days per leap or skip unit is a prime number (5- or 7- day leap week cycles, 19-day leap month cycles), the only possible multiple cycle is the absolute value of days per leap or skip times the leap day cycle length, but where it is a non-prime number (6- or 8- or 10- day leap week cycles, 28- or 30- or 35-day leap month cycles) then the multiples can be any of the days per leap or skip divisors greater than one. For example, 30-day leap month cycles can be 2, 3, 5, 6, 10, 15, or 30 (all of the divisors of 30 greater than 1) times longer than the leap day cycle having the same mean year. The total number of days per cycle must be divisible by the number of days per leap or skip.

For the solar charts the legends labelling the cycles that are best suited to the south solstice mean year are highlighted in blue, those that are best for the northward equinox mean year are green, brown for the southward equinox, and red for the north solstice (in order of descending mean year length for the present era). For the lunar chart the cycles that are best suited to the present era are highlighted in magenta. Click on the link for each chart to view its PDF in a new window. Each PDF is about 50KB in size. All of the cycles are based on "leap long" arithmetic, for the reason as explained in the introductory Basic Leap Cycle Calculations section above.

Lunar (Generated with the optional extremely long Hindu and Easter cycles included, then zoomed in ×2 to resolve their labels distinctly. See that the 52-yerm and the 49-yerm cycles are the best short cycles for the present era. The 25-saros cycle is of special interest because it is 1/4 of the present era mean northward equinoctial year, so it would be excellent for a short Easter computus cycle: click here to for more information.)

Solar Leap Day (The relatively large circles of the 33- and 62-year leap day cycles force all nearby cycles to have a greater number of years per cycle. The edge of the huge circle of the 4-year leap day cycle contacts the right side of those circles, but its excessively long mean year relegates it to serve as the long mixer cycle way off the top of the chart.)

Solar 5-Day Leap Week (Most years are short = 365 days, long years have 370 days.)

Solar 6-Day Leap Week (Most years are long = 366 days, short years have 360 days.)

Solar 7-Day Leap Week (See that the 293-year cycle is the shortest "best" cycle (dark green) for the northward equinoctial year, and the 327- and 389-year cycles are the shortest "best" cycles (dark red) for the north solstitial year.)

Solar 8-Day Leap Week (There is only one cycle that is best for the north solstitial year, 989 years long. The next shorter mean year cycle is 19/29, which due to its huge circle diameter precludes the possibility of any other short cycles existing nearby.)

Solar 10-Day Leap Week (Majority of years are long = 370 days, short years have 360 days.)

Solar 19-Day Leap Month (Of interest for Bahá'í calendar leap month variants.)

Solar 28-Day Leap Month (The best cycles have the same denominators as the best 7-day leap week cycles.)

Solar 30-Day Leap Month

Fixed arithmetic lunisolar leap cycles, in terms of the proportion of short and long years, always comprise the same list, but their mean years depend on the selected mean lunar month. Examples shown here, in order from long to short mean month are:

For any mean month that is reasonably accurate for the present era the 353-year lunisolar cycle is the clear "winner" for the mean northward equinoctial year, but longer cycles can be found that have a simple ratio of months per solar and lunar months cycle. The excessively long mean year of the 19-year metonic cycle, however, relegates it to serve as the long mixer way off the top of the chart, and the edge of its huge circle is seen touching the right side of the 353-year circle and all of its neighbours.

Martian Leap Sol (long years have 24 months of 28 sols, in short years the last month has 27 sols)

Martian 7-Sol Leap Week (long years have 24 months of 28 sols, in short years the last month has 3 weeks)

Having examined the above examples, you may enjoy a "live" experiment with Ford circles for other target ranges or other calendar types, or to see circles that are outside the ranges shown in the PDF charts above. You are welcome to download the Microsoft Excel spreadsheet with VBA macro that I developed to generate these Ford circle charts. The spreadsheet is also a source for mixer cycle examples. The macro is compatible with Windows versions of Excel 2000 through Excel 2010 (enabling the macro to run requires a "medium" or "low" security setting within Excel). [Unfortunately the macro can't work in any Macintosh version of Excel, including 2011, because no Mac version of Excel supports ActiveX controls.]

Click here to download the "Ford Circles of Leap Cycles" spreadsheet Ford Circles 1.1MB

The mediant fraction algorithm employed by this spreadsheet generates exactly the same list of mixers and leap cycles as Fixed Leap Cycle Finder (if all cycles are expressed as "leap long") provided that the control settings are the name (maximum length, minimum and maximum mean year), but it inherently generates them in sequential order of descending mean year (or month), whereas the "brute force" method in Fixed Leap Cycle Finder produces a mixed up list that its macro sorts at the end.

Upon launch, the Ford Circles spreadsheet starts out at the "Cycles" worksheet. You may modify the yellow-background cells, but make sure that you understand well what they control. Some of the cells have a small red tag (triangle) at the top right corner, indicating that if you hover your mouse pointer over one of those cells then Excel will display a comment about the cell contents.

The "Circle Factor" cell controls the scaling of the circles. If on your computer the circles don't look nicely circular then you can adjust this factor and replot the chart until they look good. Larger values cause circles to stretch more in the vertical (real numbers) axis direction. The suggested Circle Factor for a legal portrait page layout is 42500 [I have experimented with extended page layouts of up to 4 legal size pages in portrait orientation, but numerous Excel glitches and malfunctions occur, and anyway such multi-page layouts can't be properly output to printers or PDFs.]

The "Vertices" cell is normally left at zero, to allow the macro to plot the circles as smoothly as possible. Each circle is actually drawn as points at regular intervals around its perimeter, connected by straight-line interpolation, that is as multi-sided polygons. (Line smoothing is not used even though it may look very nice because in Excel versions prior to 2007 it causes this chart to sporadically show stray vertical lines on printout or print preview, and in later versions of Excel it causes circles not to accurately plot in their proper vertical positions.) If the circles don't appear smooth enough, for example if large circles fail to contact subordinate circles, the user can specify the number of vertices in the plotted polygons, increasing the setting until a satisfactory drawing is obtained. There is no need to choose a vertex count that will divide a circle into a whole number of degrees, because the macro plots in radians, not degrees, since radians are the native trigonometry units in Excel and VBA.

Vertices=4 is useful for optimizing the Circle Factor. It will plot squares whose corner-to-corner diameters are easy to measure horizontally and vertically on a hardcopy printout. Measure the largest square that fits the printed area, then adjust the Circle Factor and redraw and reprint the Ford circles chart until good squares are obtained. It is unwise to adjust the Circle Factor based on the on-screen display, due to varying equivalency of the horizontal and vertical pixel dimensions and spacing, especially for screens where the user can adjust the display width and height. I recommend selecting the Circle Factor that yields the best printed circles, because precision isn't as important for on-screen display, and because printers typically have much higher resolution than screens do. Finally clear Vertices=0 to restore drawing of normal circles.

The "Stars" checkbox is just for fun. Try it with vertices = 5, 6, 8, and a large odd number such as 99.

The "Leap Long (else Skip Short)" checkbox controls whether the generated mixers and leap cycles will be of the "leap long" or the "skip short" type. Observe how the worksheet updates as you toggle this checkbox (any cycles listed on the "Cycles" worksheet are also updated, but any previously plotted Ford circles chart is not updated). The "Length of Leap Unit" column of positive numbers becomes a "Length of Skip Unit" column of negative numbers, and the mixers switch to complementary mixers. This checkbox has no effect on lunar cycles, whose fraction numerator is always the number of full 30-day months per cycle and denominator always the total number of months per cycle.

The mean year limits set the longest and shortest fractions that will be considered within the target range. Although they are displayed as hours, minutes, seconds (HH:MM:SS) the user can actually enter decimal fractional values or fraction expressions (such as "=71/293") into those cells. If desired the user can change their cell format to show decimal fractions. The "Range m:ss" column to their right shows their difference in minutes and seconds. The user can change the mean month limits for lunar cycles, but it makes little sense to make them broader, even though the default spans only a 4-second range, because this is actually a very broad range relative to the rate at which the mean lunar cycle, in terms of mean solar days, gets progressively shorter. In fact, a lunar cycle range of only a single second from a maximum of 12:44:03 down to a minimum 12:44:02 would more than suffice.

The user can specify the maximum years per cycle, which will become the maximum denominator used by the mediant fraction method. The preset values are pretty reasonable choices, but you may prefer fewer or more cycles to be listed and plotted. The other columns that have white backgrounds are either preset constants or calculated. In particular the "mixer" columns are calculated. If the mixer columns show "####" then your system doesn't have VBA macros enabled, in which case you should enable macros, and after that for Excel versions prior to 2007 close the spreadsheet and launch it again.

At the bottom of the "Cycles" worksheet the user can set the exact mean month for lunisolar cycles, either by entering the desired number of full months per cycle and the total number of months per cycle, or by clicking on one of the built-in preset buttons (25-saros cycle, 49-yerm lunar cycle, 52-yerm lunar cycle, Hebrew molad cycle). Another quick way to set the exact mean month is explained below.

If the user clicks on a "radio button" below the "Select Cycle Type Below" prompt then the cycle list will be very quickly generated by the mediant fraction method. (If that radio button is already selected from a previous run then first click on the "Release Selection" radio button.)

After generating the cycle list, if you also want the Ford circles chart then click on the "Draw Ford Circles" button. The mouse pointer will switch to an hourglass timer icon while the circle legends are applied and the screen will flicker every few seconds until it is finished, which usually takes less than a minute. The macro will beep once when finished.

The Ford circle legend labels need to be a very small font to avoid wrapping: Arial Narrow at 5 point size works well. If your screen has sufficiently high resolution then the "Optimize Width" button will enlarge the entire chart to fill your screen width, and even this rather small font size will be clearly legible. You can of course set an Excel worksheet zoom that will enlarge the chart beyond your screen width. I am assuming that the Arial Narrow font is standard on all personal computers. Anyone who is missing that font can get it from their Microsoft Office installer disc. Rarely, Excel "forgets" the font format for the legend labels, displaying some of them in your larger default font. This usually happens when it plots hundreds of circles after having plotted only a small set of circles in the previous run. To fix this glitch just click once on a legend label to select all of them, then choose to format the font as Arial Narrow at 5 point size.

Solar, lunisolar, and Martian cycle lists are built on the "Solar" worksheet. Lunar cycle lists are built on the "Lunar" worksheet.

After generating a list of lunar cycles, the user can select any cell in the row belonging to any desired cycle on the "Lunar" worksheet and then click the button "Use selection to generate Lunisolar cycles". The exact mean month for that cycle will be copied to the appropriate cells at the bottom of the "Cycles" worksheet and then a corresponding list of lunisolar cycles will be quickly generated and displayed on the "Solar" worksheet. The "Selected LS Cycles" worksheet contains a list of exact lunisolar cycles that seem interesting.

The "Use selection to generate computus cycles" command button performs the converse operation, that is using a selected solar cycle to generate lunisolar computus cycles based on the all of the lunar cycles listed on the "Lunar" worksheet. The generated cycles appear on the "Computus" worksheet. Each has the same mean year as the originally selected solar cycle, and the same mean month as the corresponding lunar cycle. The list of computus cycles is not exhaustive, depending on the length of the lunar cycle list and the maximum number of months per cycle, so it may be a good idea to first generate a long list of lunar cycles (up to a maximum of 30000 months per cycle may not be unreasonable, perhaps more). Even so, some short computus cycles may be missed by the generation strategy.

Columns of decimal values that appear on the "Solar", "Lunar", "Selected LS", and "Computus" worksheets actually contain exact fractions, formatted to display as decimal values. If you select any cell in such a column then you'll see the exact fractional expression in the Excel Formula Bar.

The "Show Cycle Pattern" command button performs an analysis of the sub-cycles of the selected solar cycle, based on a symmetrical smoothly spread distribution of leap (or skip) years. Long years are denoted by vertical bars, short years by raised dots. The middle years of each symmetrical sub-cycle are highlighted in red. After the first level of sub-cycles are shown, the sub-cycles that were found are separately shown below, recursively, until no further sub-cycling is possible.

When you are repeatedly experimenting with the circle factor or vertices setting or other settings, you can simply click the "Draw Ford Circles" button on the "Solar" or "Lunar" worksheet. That will re-draw the circles using the already existing list of cycles on that worksheet.

To experiment with the list of generated cycles without waiting each time for plotting the circles, switch to the "Solar" or "Lunar" worksheet, modify the yellow-background cells at the top of the worksheet as desired, then click the "Recalculate Cycles" button. Whenever you are finally ready to view the circles, click the "Draw Ford Circles" button.

The "Lunar" worksheet has optional checkboxes to control inclusion of Easter and/or Hindu lunar cycles, whose denominators are far too large to get generated in a normal run, and whose circles, although plotted, are too small to see on the chart. Their horizontal lines and legends will be seen on the chart, but the fractions in their legends contain so many digits that they would overflow to two lines, messing up the legends of adjacent cycles, hence they get a more compact legend format. For example, the full format legend for the Gregorian Easter cycle would be "4312703( 12h 44m 2+49928114/70499183s = 37405943/70499183, 2.708" but instead the more compact format shown is "4312703( 12:44:02.708 = 37405943/70499183", in which the time format is more compact and the exact fraction of a second is replaced by a decimal fraction, rounded to the nearest millisecond, and the rightmost seconds in excess of 29d 12h 44m is omitted because it is redundant. The listing of cycles on the "Lunar" worksheet does show the exact fraction of a second, as well as the seconds in excess of 29d 12h 44m rounded to microsecond resolution.

The list of lunar cycles always includes the Hebrew molad (25920 months), Tibetan Phugpa (5656 months), and the 25-saros cycle (5575 months = 1803/4 mean northward equinoctial years), even though their circles are tiny, because their legends in the full format take only one line at optimal chart width. If you don't want to see the extra cycles on the Ford circles chart, then switch back to the "Lunar" worksheet and delete the cycle rows that you don't want plotted, then click the "Draw Ford Circles" button.

Other comments that can appear on the "Lunar" listing include eclipse cycles: saros, exeligmos, inex, and triad cycles, which are explained on the "Eclipse Cycles" page. At the default maximum denominator of 2000 none of the eclipse cycles will be included, because the shortest is the 19-saros cycle having 4237 lunar months. Setting the maximum denominator considerably higher will generate more eclipse cycles, but there will be too many cycles to plot as Ford Circles, and anyway they will have large denominators and therefore very tiny circles. Click here to open a single-page PDF list of short lunar cycles (having 3 or less yerm eras) with mean month from 2 to 3 seconds in excess of 29 days 12 hours 44 minutes, all eclipse cycles up to a maximum denominator of 30000 months, and a few extra noteworthy cycles.

On the "Solar" and "Lunar" worksheets the "Mixers" columns indicate the proportions of the two mixers that comprise each cycle. Column autofiltering menus are provided on these worksheets, which you can use to limit which circles are plotted. It is particularly interesting and educational to use autofilter on the "nth Order" column, then click the "Draw Ford Circles" button. The "Sort by nth Order" button will do what it says, then to restore sorting by mean year (or month) just click on the "Recalculate Cycles" button or generate another set of cycles. Near the top left of these worksheets is the count of cycles listed (visible or not) and below that the count of visible cycles (not hidden by autofiltering or manually controlled row hiding). Occasionally Excel may not update the count of visible cycles, or may display "#####" or "#VALUE!" there, in which case clicking on the "Count Visible" button will correct the problem. Autofiltering is also useful to either show exclusively or to hide only the cycles whose length is a multiple of the leap day cycle having the same mean year, by filtering for rows that contain or do not contain "x", respectively.

For lunisolar cycles the "Solar" worksheet shows the integer number of months per cycle, the ratio of solar : lunar months per solar cycle, and the greatest common denominator (GCD) of the month counts. For other solar cycle types the list shows the integer number of days per cycle, without month columns.

For lunisidereal cycles, first generate a list of lunisolar cycles, then near the top right of the "Solar" worksheet set the longest mean year limit to 06:10:00 and the shortest to 06:05:00 (this will cause the metonic 7/19 cycle to become the short mixer). Then near the top left of the worksheet decrease the maximum number of years per cycle to about 1000. Finally, click the "Recalculate Cycles" button. The present era mean sidereal year is about 365 days 6 hours 9 minutes and almost 10 seconds, in terms of atomic days (not mean solar days), but the program won't color-highlight cycles that have good sidereal mean years. If desired, click the "Draw Ford Circles" button.

On the "Solar" worksheet "U" is the unique modular (multiplicative) inverse of the number of long years per cycle and the number of years per cycle, as explained above, and "K" is the coefficient that will yield a smoothly spread symmetrical distribution of long years, as explained in the "Smoothly Spread Symmetrical Leap Cycles" section above.

The preset chart layout is a single page in US legal portrait. You can change that if you like, but then you should adjust the Circle Factor until the circles look best (try changing it in units of 1000 or 500).

The "Ford" worksheet has buttons to quickly adjust the chart scaling (magnification or reduction) and to shift to longer or shorter mean years (or months). At any time the user can click the "Reset" button to return to the scaling that the macro chose automatically when it drew the chart. The "Optimize Width" button will maximize Excel on your display, then will maximize the active window, then will set the Excel page zoom percentage so that the chart fills the available width of the window. If the width is too small then the circle legends will be hardly visible and will wrap onto more than one line. If the width is too large then you won't be able to see the full width of the chart.

To better view the Ford circles chart, if you have any extra toolbars taking up space on your screen then go to "View" and then "Toolbars" and switch off the extras (or in Excel 2007 or later switch off the ribbon bar). Alternatively, just choose "View" and then "Full Screen" to see the chart without anything in the way.

The user can change the color choices for the "good" and "best" cycles on the "Astro" worksheet, and can also set the target year for the astronomical evaluations (the preset year is 2001 AD). Changing the target year has no effect on the Martian year lengths because I don't have formulae for those (yet).

For the curious, the "Data" worksheet contains the coordinates of each plotted point, and the "Legend" worksheet contains the text of the cycle legends that were applied as labels to the horizontal lines, but these worksheets are of negligible interest to the user.

The "Divisors" worksheet just contains a utility calculation to display all of the divisors of a given integer, optionally indicating which of those divisors are prime numbers.

Clicking on the button "Haros Sequence (all fractions with denominator <100)" will list 98/99 down to 1/99 with all 3001 of the fractions in-between, along with the mixer cycles 1/1 and 0/1, but it won't plot the Ford circles because that would take a very long time, and anyway Excel is unable to apply more than 1000 labels to a chart. You can plot parts of the Haros sequence plotted by autofiltering the "nth Order" column, or other criteria, to limit the list to about 150 cycles, then click on the "Draw Ford Circles" button.


Calendar Seasons: Stable Points in the Solar Cycle

Although the mean year of any particular leap cycle may not exactly match the mean year of an equinox or solstice, each reasonably accurate leap cycle has a mean year that is a stable match to one or two points in the annual solar cycle, which we can call "calendar season(s)" for that leap cycle. In the present era, such calendar seasons are stable for calendar mean years that are as short as about 365 days 5 hours 47 minutes 53 seconds to as long as about 365 days 5 hours 49 minutes 35 seconds, a range of only about 1 minute 42 seconds, corresponding to the shortest and longest available mean years in today's solar cycle:

Solar Year Range for Stable "Calendar Seasons"

Expressed as minutes and seconds in excess of 365 days 5 hours (mean solar time).

(click here or on the chart to open a high-resolution PDF version 70 KB)

solar year range for stable calendar seasons

The trend toward fewer mean solar days per solar year is due to tidal slowing of the Earth rotation rate.

The range of possible calendar seasons is currently getting narrower due to decreasing Earth orbital eccentricity and decreasing Earth axial tilt.

If Earth's orbit were a perfect circle or ellipse and if the Earth axial tilt were constant and its axis not wobbling then the mean length of the solar cycle would be the same no matter where in the solar cycle the measurement were started. In actuality, however, Earth's orbit is not a perfect ellipse (the major axis of the ellipse advances around Sun), and there is a long periodic variation in the Earth axial tilt as well as a long periodic wobble of the axial direction, which collectively cause the solar cycle mean year to vary slightly but significantly, depending on the measurement start point.

In any given era the longest cycle mean year having a stable calendar season will match the mean solar year (in terms of mean solar days) at the ecliptic longitude of the Earth orbital perihelion, and the shortest cycle mean year having a stable calendar season will match the mean solar year at the ecliptic longitude of the Earth orbital aphelion. (These are not the same as the anomalistic year, the time taken for Earth to complete one revolution with respect to perihelion or aphelion, which is presently about 365 days 6 hours 13 minutes and 52 seconds, slightly longer than the sidereal year because of the advance of perihelion and aphelion.) For example, if in the present era the mean perihelion is at an ecliptic longitude of 283° then the longest solar year will be the one measured from that solar longitude until the next time Sun reaches 283°, or if the mean aphelion is at 103° then the shortest solar year will be the one measured from that solar longitude until the next time Sun reaches 103°. (When calculating the mean year for any ecliptic solar longitude, year-to-year variations mainly due to Moon make it necessary to compute averages symmetrically spanning many centuries before and after the target year, or to carry out the calculation for the Earth-Moon center of gravity.) The advance of perihelion (and aphelion, always 180° away) and the tidal slowing of the Earth rotation rate cause calendar seasons to evolve and migrate as the millennia pass:

Solar Year Length Variations on Earth

Expressed as minutes and seconds in excess of 365 days 5 hours (mean solar time).

(click here or on the chart to open a high-resolution PDF version 21 KB)

solar year length variations

The curves shift to the right as the millennia pass due to the advance of perihelion, they shift downward due to the tidal slowing of the Earth rotation rate, and the swing range (amplitude) of the yearly variation is declining due to decreasing Earth orbital eccentricity and decreasing Earth axial tilt over the span of years plotted. The primary calendar seasons occur at the solar longitude where the lines tightly bunch together near the bottom left, and the secondary calendar seasons occur at the solar longitudes where the lines loosely group together near the top right of the chart above.

A leap cycle will not have any calendar seasons in an era in which its mean year is a few seconds shorter than the mean year at the ecliptic longitude of aphelion. With tidal slowing of the Earth rotation rate, however, eventually the mean year at aphelion will equal the cycle mean year, so a calendar season will appear at the ecliptic longitude of aphelion. With progressive tidal rotation slowing that calendar season will split into a more stable season that will migrate in opposite directions. The more stable calendar season migrates to earlier solar longitudes, and is more stable because it moves against the advance of perihelion. The less stable calendar season migrates to later solar longitudes, and is less stable because it moves in the same direction as the advance of aphelion. As tidal rotation slowing continues, eventually the average length of the solar cycle will approximately equal the cycle mean year, and then both calendar seasons will be migrating at slowest rate towards perihelion, and perihelion and aphelion will be situated approximately midway between them, with perihelion having the less stable calendar season behind it (prior solar longitude) and the more stable calendar season ahead of it (later solar longitude). Further tidal rotation slowing will cause the calendar seasons to converge towards perihelion, disappearing in later years when the mean year near the ecliptic longitude region of perihelion becomes longer than the cycle mean year. Migration of the calendar seasons is fastest near the start and end of their existence, and their positions are most stable during the middle several millennia of their existence. Their migration is fastest from the region of about 15° before to about 30° after the ecliptic longitude of perihelion, so both calendar seasons become unstable and disappear before ever reaching perihelion. In total it takes 10-11 millennia for a calendar season to start at aphelion and end at perihelion.

With that description, the reader might think that aphelion should eventually "catch up" to perihelion, but that can never happen because they both advance in unison around Sun, always 180° apart. As aphelion passes through each point of the solar cycle, however, that ecliptic solar longitude has the shortest mean year, and the opposite solar longitude 180° away at perihelion has the longest mean year.

Deeper tidal slowing of the Earth rotation rate, if it persists for many centuries, tends to improve the long-term stability of the solar year lengths for the ecliptic longitudes between perihelion and aphelion, thus stabilizing the most stable calendar season.

In collaboration with K.E.V. (Karl) Palmen of the Rutherford Appleton Laboratory in the United Kingdom, primarily based on correspondence with the CALNDR LISTSERV during early 2009, I developed the following method of finding and characterizing calendar seasons:

Choose an appropriate baseline middle year. Typically that year would be in the present era or recent past for calendars intended to approximate the northward equinox, or a year within the next few millennia for calendars intended to approximate the north solstice. Although calendar seasons exist that could be used to approximate the southward equinox or south solstice, they are only moderately stable in the present era.

Calculate the New Year Moment (NYM) of the baseline middle year, using the arithmetic presented above in the "Smoothly Spread Symmetrical Leap Cycles" section. For elapsed each day of the baseline middle year relative to the NYM, calculate the ecliptic solar longitude, then use that to generate the MiddleLine value to be subtracted from other comparison years:

MiddleSoLong = SolarLongitude(NYM(MiddleYear) + ElapsedDaysInYear)

MiddleLine = modulus(ElapsedDaysInYear × 360° / CycleMeanYearMiddleSoLong, 360°)

where modulus( x, y ) = x y × floor( x / y ) and where CycleMeanYear = 365 + LeapDaysPerCycle / YearsPerCycle.

On a chart, plot the baseline middle year as a horizontal line, at "zero drift".

For various years appropriately spaced prior to and after the middle year, calculate the their respective NYM and solar longitude at each elapsed day of the year. The spacing between these other evaluated and plotted years could be the length of the leap cycle or an arbitrary step size of 50 to 500 years, as desired. (If the step size is too large, such as 1000 years, then the stable calendar season may get masked by its slow drift to later dates in the calendar year, caused by the advance of perihelion.) For each of these other years, calculate the calendar drift relative to the baseline middle year for each elapsed day of the year relative to the respective NYM, starting with the solar longitude:

SoLong = SolarLongitude(NYM(Year) + ElapsedDaysInYear)

Calculate the solar longitude drift relative to the previously calculated MiddleLine:

Drift = modulus(ElapsedDaysInYear × 360° / CycleMeanYearSoLong, 360°) – MiddleLine

where the expression ElapsedDaysInYear × 360° / CycleMeanYear is the leap cycle's implied approximation of the solar longitude for that number of elapsed days. Finally, convert the drift to hours of calendar drift relative to the middle year:

HoursOfDrift = Drift × CycleMeanYear / 15

where the divisor 15°/h is 360° divided by 24 hours.

On the resulting chart, the various plotted curves will converge, cross, and reverse their order at the most stable calendar season, if it exists. This is the stable point in the solar cycle that has an astronomical mean year equal to the leap cycle mean year, persisting for at least as long as the interval between the earliest and latest convergent year on the chart. A secondary, less stable calendar season usually exists elsewhere in the solar cycle, but at a point where many of the curves cross each other above or below the horizontal line that represents the baseline middle year. The secondary calendar season will appear better defined if the step size between plotted years is reduced, but occasionally a small step size may make it seem slightly better defined that the primary calendar season (for example 71/293 cycle with 50-year step size and middle year 2500). If the mean year of the leap cycle is too long or too short relative to the era of the baseline middle year then convergence and crossover will be incomplete, or lacking entirely (for example any cycle having a mean year outside the bounds suggested above, with a present era middle year).

One way to find the calendar seasons is to calculate the standard deviation (SD) of the drift for all plotted curves (including the zero baseline) and then find the one or two minima in that list. Another method is to look for curve crossovers, especially where the baseline middle year is crossed. A crossover occurs wherever the drift of a lower year minus the drift of a higher year changes sign. The moment of the crossover can be calculated by linear interpolation as follows:

Let (Ax, Ay) and (Bx, By) be the coordinates of the lower year curve on the day before and after the crossover, respectively, where the x-coordinate is the elapsed day number and the y-coordinate is the drift relative to the middle year, and AB is the line between them. Similarly let (Cx, Cy) and (Dx, Dy) be the coordinates of thei higher year curve on the day before and after the crossover, respectively, and CD is the line between them. The intersection of line AB with CD falls at the moment and drift of the crossover. Calculate the solar longitude for that moment within the lower year (it will be the same solar longitude at the corresponding moment in the higher year, that is why they crossed each other). If the solar longitude is >180° then it may be convenient to subtract 360° to avoid a discontinuity near the northward equinox, so that values near stable calendar seasons will be within the range of ±180°.

If a secondary calendar season is to be used for calendrical purposes then due to its more rapid migration it is best to calculate it for a range of years where the middle year is well into the future, provided that the primary calendar season will still be stable.

Click here to download the "Find Solar Calendar Seasons" spreadsheet 2MB

In order for the macro to run, you must have the full version of Excel, it won't run in the Excel Viewer environment. In addition, your Excel security settings must allow the macro to run, with or without your confirmation, as you prefer. To enable macros, use the Excel "Tools" menu, choose "Macro", then over to "Security...", then choose the desired macro security level. At the present time the spreadsheet doesn't display its chart nicely in Excel 2007, so for best appearance use an earlier version of Excel.

To see what such charts are supposed to look like, click on any of the following years-per-cycle links to open a PDF version of a calendar seasons chart for that cycle, as generated by the "Find Solar Calendar Seasons" spreadsheet: 293, 524, 33, 400, 327, 389 (each PDF is about 93 KB).

The example chart for the 293-year leap cycle shows that it has a stable calendar season that is presently about 4 days after the northward equinox, which is consistent with its calendar mean year being slightly shorter than the mean northward equinoctial year, and it has a secondary calendar season in the region of the last week of October. By shifting the plot to earlier and also to later millennia, stable calendar seasons can be found for this leap cycle from before 4000 BC until about 5000 AD (>9 millennia), gradually migrating to later dates in the calendar year in parallel with the advance of perihelion. If you set the middle year to 5000 AD then prior plotted years will be drawn with medium thickness lines, indicating that they cross the middle year, but future years will be drawn with thin lines, indicating that they don't cross the middle year (they converge toward the calendar season without crossing the baseline).

To use the spreadsheet, activate the "Setup" worksheet and enter the desired number of leap days per cycle, years per cycle, step size in years (preferably a multiple of the mean synodic month to obtain the smoothest plotted curves, see the continued fraction calculator at the bottom of the Setup worksheet), and middle year number (such as a year near the present era). Observe the calculated cycle mean year as you change these entries, and compare with the shortest, average, and longest solar years for the specified middle year. If your computer system has the Wingdings font installed (a standard TrueType font in Windows) then the spreadsheet indicates if the cycle mean year is within range (happy face icon), too short (down arrows), or too long (up arrows).

There is also a checkbox to control automatic scaling of the vertical axis of the chart. Normally this should be left checkmarked.

If you want help to choose a cycle that has a certain mean year, the middle section of the Setup worksheet offers a continued fraction calculator into which the user can enter a fraction or time or decimal number expression, then a series of progressively more accurate convergents will be listed below. Clicking anywhere in a row that contains a convergent and then clicking the "Use Selection" button will cause that approximation to be entered into the LPC and YPC fields above, then the chart will be generated.

After the user clicks the "Click Here to Update Chart" button the macro will run, automatically switching to the "Chart" worksheet and updating it as the calculation proceeds. The primary (more stable) and secondary (less stable) calendar seasons will be marked with dashed vertical lines and their legend keys at the bottom left show their number of elapsed days, solar longitude, month and day. If the specified middle year number is not divisible by the step size then it will change to the prior year number that is divisible.

The chart also shows the elapsed day positions of the equinoxes, solstices, and mean perihelion and aphelion in the middle year.

Navigation buttons at the top allow you to shift a couple of steps to the past or future.

If you click on one of the "Year ####" curves, then click on the "Shift to Selected Curve" button near the bottom left, the chart will recalculate using that year as the new middle year number.

Any of the worksheets that have light blue tabs, for example "LD", "LW7" and so on, contain many examples of potentially useful calendar cycles. You can click in the row of any desired cycle and then click the "Use Selected Leap Cycle" button. The meanings of the worksheet tab abbreviations are as follows:

AbbreviationDescription
LDleap day
LD whole secsleap day cycles having mean year exact to the whole second
LW5leap week (5 days per week, perpetual, most years short = 365 days)
LW6leap week (6 days per week, perpetual, about 7/8 of years long = 366 days)
LW7leap week (7 days per week, perpetual)
LW8leap week (8 days per week, perpetual, about 2/3 of years long = 368 days)
LW9leap week (9 days per week, perpetual, more than half of years long = 369 days))
LW10leap week (10 days per week, perpetual, more than half of years long = 370 days)
LM19leap month, all months = 19 days
LM28leap month, all months = 28 days (perpetual for 7-day week)
LM35leap month, all months = 35 days (perpetual for 7-day week)
LM30leap month, all months = 30 days
LS 49yermlunisolar, fixed mean month based on 49-yerm cycle = 29+425/801 days
(425 full months per 801-lunar month cycle)

The "Cross" worksheet shows the detailed list of curve crossover points. If you autofilter on Drift = 0 then the list will display only the baseline crossings.

The "Cycles" worksheet contains a collection of leap cycles that is in turn used for the "Pattern" chart, depicting the approximate mathematical relationship between the calendar mean year fraction (hours minutes and seconds in excess of 365 days) and the stable solar longitude of the calendar season, expressed over the range ±180° relative to the northward equinox. It shows that in the present era there is an approximately linear relationship between the calendar mean year fraction (in excess of 365 days) and the solar longitude of the stable calendar season:

StableSolarLongitude = 28735 – 118580 × MeanYearFraction

where MeanYearFraction = LeapDaysPerCycle / YearsPerCycle and the StableSolarLongitude is expressed as ±180° measured along the ecliptic relative to the northward equinox.


Format of the Leap Rule Tables Below

The Leap Key corresponds to the leap rule abbreviation in Kalendis, which can be employed to produce leap year lists for most of these leap rules, as applied to the Symmetry454 or Symmetry010 leap week calendars, or compatible variants. For fixed arithmetic cycles the abbreviation comprises the number of leap years per cycle / number of years per cycle. Where the Mean Year is shown with an equivalency symbol (≡) the decimal value is exactly equivalent to the fraction (with overscored digits and "..." indicating a repeating sequence of decimal digits), otherwise an asymptotic symbol (≈) indicates that the decimal value is rounded but almost equal to the given fraction.

These leap rules are also applicable to leap day calendars that have smoothly spread leap years, by taking only the middle day of the distribution (centered above and below the green regression line, if shown). For fixed arithmetic leap day calendars the number of leap years per cycle and the number of years per cycle is indicated by the proper fraction in the "Mean Year" column. For example, for the 159/896 leap rule the mean year is shown as 365 days plus the fraction 31/128, which indicates that the leap day equivalent cycle (having the same mean year length) would have 31 leap days in 128 years.

To save space, the Mean Year length, where fixed, is given as the portion of a day in excess of 365 days, expressed as the fraction, hours : minutes : seconds and fraction of a second, the continued fraction equivalent, and as a decimal number. To convert to the actual mean year, just add 365 days.

The fraction in excess of 365 days can only contain a whole number of seconds if the number of seconds per day (24×60×60=86400) is divisible by the denominator, which is usually the number of years per cycle, but may be less if the mean year fraction reduces. The divisors of 86400 are: 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, 30, 32, 36, 40, 45, 48, 50, 54, 60, 64, 72, 75, 80, 90, 96, 100, 108, 120, 128, 135, 144, 150, 160, 180, 192, 200, 216, 225, 240, 270, 288, 300, 320, 360, 384, 400, 432, 450, 480, 540, 576, 600, 640, 675, 720, 800, 864, 900, 960, 1080, 1152, 1200, 1350, 1440, 1600, 1728, 1800, 1920, 2160, 2400, 2700, 2880, 3200, 3456, 3600, 4320, 4800, 5400, 5760, 7200, 8640, 9600, 10800, 14400, 17280, 21600, 28800, and 43200 (only 2, 3, and 5 are prime numbers). Those that are highlighted in boldface are mentioned in discussion of leap rules below.

For the leap cycles that are astronomical, linear approximations, or in which leap years are not smoothly spread, an astronomical drift chart in PDF format is linked to the Leap Key. To view any chart using a PDF reader such as the freely available Adobe Acrobat Reader, just click on the Leap Key link. Each PDF is 200 to 300 KB in size, as one page in landscape layout. Each will open in a new window so that you won't have to wait for loading.

For any of the simple fixed arithmetic leap cycles the "Dynamic Demonstration of Mean Solar Calendar Drift Rates" spreadsheet, freely available above, offers an excellent way to evaluate long-term astronomical drift.

In several cases equivalent simple lunisolar cycles are mentioned, which could be useful not only for lunisolar calendar purposes, but also for generating an Easter computus having a mean year that is identical to the solar calendar.

Leap Rules for Aligning Calendars Relative to the Northward Equinox

Leap Key Mean Year
(in excess of 365 days)
Description and Comments (northward equinox = ecliptic solar longitude 0°)
NE80 actual equinoctial year The "gold standard" for the Northward Equinox, taking the New Year moment as 79 days prior to the astronomical equinox, calculated for the meridian of Jerusalem, so that on average the equinox will land at midnight starting the 80th day of the calendar year. Has small variations (±15 minutes) in the equinoctial year length, mainly due to gravitational interactions with Moon, Venus, and Jupiter.
MNE80 mean equinoctial year
(currently 5:49:00.2)
The "secondary gold standard" for the Northward Equinox, taking the New Year moment as 79 days prior to the mean equinox, calculated for the meridian of Jerusalem, so that on average the equinox will land at midnight starting the 80th day of the calendar year. Better regulated than NE80, above, eliminating short-term fluctuations in the equinoctial year length, but the polynomials employed for calculating the mean equinox moment are valid for only ±3 millennia from the present era. Kalendis extends the valid range by using NE80 and averaging ±50 years centered on the target year.
52/293 71/293 ≡ 5h 48m 56+152/293s

.242320819112628

71 leap days or 52 leap weeks per 293-year cycle (293 is a prime number) [cycle has 107016 days, prime divisors are 2, 3, 7, 13]. The primary calendar season for years 0 - 1765 - 3530 is at an ecliptic solar longitude of about 3.1° (about 3 days after the northward equinox), click here to view chart 93 KB.

The 52/293 leap cycle is preferred for the Symmetry454 and Symmetry010 calendars because:

  • All other considerations being about equal, a shorter cycle seems preferable.
  • There are exactly ( 7 × 7 × 6 = 294 ) × 364 days in this 293-year cycle.
    In other words, the total number of days is exactly equal to 294 non-leap years.
  • The 52 leap weeks in the 293-year cycle exactly equal the length of one non-leap year (364 days).
  • The average interval between the 52 leap weeks is exactly 294 weeks.
  • The 293-year leap cycle is ideal for approximating the mean northward equinox (March equinox, boreal vernal equinox, northern hemisphere spring equinox) for the past 5 millennia and the next 4-5 millennia, keeping the average equinox near midnight in Jerusalem at the beginning of the 80th ordinal day of the calendar year (Symmetry454 March 17 or Symmetry010 March 19).
  • Although the 52/293 cycle mean year is slightly too short for the present era, that attribute will ensure an extra 500 years of excellent northward equinox alignment, until beyond 6000 AD. By then, perihelion will have advanced past that equinox, causing the equinoctial mean year thereafter to get shorter at an accelerating rate, see "The Length of the Seasons (on Earth)" at <http://www.sym454.org/seasons/>).
  • The odd number of years per cycle permits the list of leap years to be arranged with perfect symmetry.
  • For a symmetrical cycle, K = 146, U = 62.
    Click here to view 2 graphs depicting the symmetrical accumulator and new year moment variations for the 293-year leap week cycle 80KB.
    The year that has the earliest (most negative) new year moment also contains the earliest equinoxes and solstices, provided that the leap unit is appended to the end of leap years. On the second page, the 33 years whose accumulators are <33 are leap years that begin 6-year inter-leap intervals, whereas the other 19 leap years (accumulator >=33 and <52) begin 5-year inter-leap intervals.
  • Symmetrically spreading the leap year intervals as smoothly as possible comes very close to minimizing the "mean equinox jitter".
  • If the Earth rotation rate doesn’t slow down as much as predicted, which seems likely as a consequence of global warming, then that will only prolong the useful range of this leap cycle further into the future.

The 52/293 cycle is identical to three 8/45 cycles alternating with two 14/79 cycles (45+79+45+79+45 = 293), and has a mean year that is proportionately intermediate between them.

The exact decimal value of the fraction 71/293 has 146 repeating digits: 0.2423208191 1262798634 8122866894 1979522184 3003412969 2832764505 1194539249 1467576791 8088737201 3651877133 1058020477 8156996587 0307167235 4948805460 750853...

93/524 127/524 ≡ 5h 49m 60/131s

.24236641221374

127 leap days or 93 leap weeks per 524-year cycle provides slightly tighter equinox alignment than 52/293, but the duration of excellent equinox alignment will be about 500 years shorter (524 is divisible by 2, 4, 131, 262, of which 131 is a full reptend prime number) [cycle has 191387 days, prime divisors are 7,19,1439]. This 524-year cycle contains 6481 synodic or 7005 sidereal lunar months. For an almost symmetrical cycle, K = 261 or 262, U = 293. The primary calendar season for years 706 - 2471 - 4236 is at an ecliptic solar longitude of about 359.2° (at the northward equinox), click here to view chart 93 KB.

The 93/524 cycle is identical to a 41/231 cycle alternating with a 52/293 cycle (231+293 = 524), and has a mean year that is proportionately intermediate between them.

For a solar leap month calendar having 19 days per month and 19 regular months per year, an exactly equivalent cycle would have 524 years with 117 leap years and a total of 10073 months per cycle.

Because 131 is a full reptend prime divisor of 524, the exact decimal value of the fraction 127/524 equals 0.24 followed by 131-1=130 repeating digits: 0.24 2366412213 7404580152 6717557251 9083969465 6488549618 3206106870 2290076335 8778625954 1984732824 4274809160 3053435114 5038167938 9312977099...

LANEY Linear Approximation to the
Northward Equinoctial Year
For about 10 millennia prior to 5200 AD, the mean Northward Equinoctial year length could have been approximated with a mean year of about 365 days 5 hours 48 minutes 57.5 seconds = 365+71/293 days. From 5200 AD to 14000 AD the equinoctial year will get shorter in almost linear fashion by about 9/5 seconds per century. After 14000 AD the mean Northward Equinoctial year length will level out at about 365 days 5 hours 46 minutes 22 seconds, for about 5 millennia.

Click here to see a chart depicting the LANEY approximation 121KB.

Leap Rules for Aligning Calendars Relative to the North Solstice

Leap Key Mean Year
(in excess of 365 days)
Description and Comments (north solstice = ecliptic solar longitude 90°)
NS174 actual solstitial year The "gold standard" for the North Solstice, taking the New Year moment as 173 days prior to the astronomical solstice, calculated for the meridian of Jerusalem, so that on average the equinox will land at midnight starting the 174th day of the calendar year. Has small variations (±15 minutes) in the solstitial year length, mainly due to gravitational interactions with Moon, Venus, and Jupiter.
MNS174 mean solstitial year
(currently 5:47:55.5)
The "secondary gold standard" for the North Solstice, taking the New Year moment as 170 days prior to the mean solstice, calculated for the meridian of Jerusalem, so that on average the equinox will land at midnight starting the 174th day of the calendar year. Better regulated than NS174, above, eliminating short-term fluctuations in the solstitial year length, but the polynomials employed for calculating the mean solstice moment are valid for only ±3 millennia from the present era. Kalendis extends the valid range by using NS174 and averaging ±50 years centered on the target year.
69/389 94/389 ≡ 5h 47m 58+58/389s

.241645244215938

The ideal fixed arithmetic cycle for aligning the Symmetry454 calendar with the North Solstice for the next 10 millennia, with 94 leap days or 69 leap weeks per 389 year cycle (389 is a full reptend prime number) [cycle has 142079 days, prime divisors are 7, 20297]. This cycle has the second shortest mean year of any fixed arithmetic cyle presented here, but for the next 11000 years it will be ideal for alignment with the North Solstice. This 389-year cycle contains almost exactly 4811+1/4 mean synodic months, so 4 such cycles would contain almost exactly 19245 mean synodic months. For a symmetrical cycle, K = 194, U = 327. The primary calendar season for years 1184 - 2664 - 4144 is at an ecliptic solar longitude of about 79.5° (slightly before the north solstice), click here to view chart 93 KB, for years 4440 - 5920 - 7400 it will be at 90.2° (at the north solstice), then it will spend a few millennia slightly after the north solstice.

For a lunisolar leap month calendar a cycle having a similar mean year would have 611 years with 225 leap years, and a total of 7557 months per cycle. Its exact mean year would depend on the selected lunar mean month.

Since 389 is a full reptend prime number, the exact decimal value of the fraction 94/389 has 389-1=388 repeating digits: 0.2416452442 1593830334 1902313624 6786632390 7455012853 4704370179 9485861182 5192802056 5552699228 7917737789 2030848329 0488431876 6066838046 2724935732 6478149100 2570694087 4035989717 2236503856 0411311053 9845758354 7557840616 9665809768 6375321336 7609254498 7146529562 9820051413 8817480719 7943444730 0771208226 2210796915 1670951156 8123393316 1953727506 4267352185 0899742930 5912596401 0282776349 6143958868 89460154...

58/327 79/327 ≡ 5h 47m 53+43/109s

.241590214067278

An excellent fixed arithmetic cycle for aligning the Symmetry454 calendar with the North Solstice for the next 5 millennia, with 79 leap days or 58 leap weeks per 327 year cycle (327 is divisible by the prime number 3 and the full reptend prime number 109) [cycle has 119434 days, prime divisors are 2, 7, 19, and 449]. This cycle has the shortest mean year of any fixed arithmetic cyle presented here, but for the next 5000 years it will be excellent for alignment with the North Solstice. This 327-year cycle contains 4389 draconic lunar months. For a symmetrical cycle, K = 163, U = 265. The primary calendar season for years 1184 - 2664 - 4144 is at an ecliptic solar longitude of almost 89° (one day before the north solstice), click here to view chart 93 KB, but for years 4440 - 5920 - 7400 it will be at about 95.8° (about 5 days after the north solstice).

The 58/327 cycle is identical to three 14/79 cycles alternating with two 8/45 cycles (79+45+79+45+79 = 327), and has a mean year that is proportionately intermediate between them.

For a solar leap month calendar having 19 days per month and 19 regular months per year, an exactly equivalent cycle would have 327 years with 73 leap years, and a total of 6286 months per cycle.

For a lunisolar leap month calendar a cycle having a similar mean year would have 296 years with 109 leap years, and a total of 3661 months per cycle. Its exact mean year would depend on the selected lunar mean month.

Because 109 is a full reptend prime divisor of 327, the exact decimal value of the fraction 79/327 has 109-1=108 repeating digits: 0.2415902140 6727828746 1773700305 8103975535 1681957186 5443425076 4525993883 7920489296 6360856269 1131498470 94801223...

LANSY Linear Approximation
to the North Solstitial Year
For the 10 millennia prior to 10500 AD, the mean North Solstitial year length can be approximated with a mean year of about 365+94/389 days ≈ 365 days 5 hours 47 minutes 58 seconds. From 10500 AD to 18000 AD the solstitial year will get shorter in almost linear fashion by about 5/4 seconds per century. After 17500 AD the mean North Solsticial year length will level out at about 365 days 5 hours 46 minutes 20 seconds, for about 5 millennia.

Click here to see a chart depicting the LANSY approximation 121KB.

Leap rules for other leap-week-compatible fixed arithmetic cycles
for aligning calendars relative to the Northward Equinox,
listed in descending order by calendar mean year

Leap Key Mean Year
(in excess of 365 days)
Description and Comments (northward equinox = ecliptic solar longitude 0°)
71/400 97/400 ≡ 5h 49m 12s

.2425

Same mean year as Gregorian calendar, but allocating 97 leap days or 71 leap weeks at intervals that are as smoothly spread as possible per 400-year cycle (400 is divisible by 2, 4, 5, 8, 10, 16, 20, 25, 40, 50, 80, 100, 200, of which 2 and 5 are prime) [cycle has 146097 days, prime divisors are 3, 7, 773]. For an almost symmetrical cycle, K = 199 or 200, U = 231. The primary calendar season for years 0 - 1860 - 3720 is at an ecliptic solar longitude of about 342.5° (nearly 3 weeks before the northward equinox), click here to view chart 93 KB.

Compare with the ragged equinox alignment of the Gregorian calendar (two pages), and the ISO leap rule (next row below), neither of which have smoothly spread leap years.

The accuracy of the Gregorian calendar mean year was limited by the sexigesimal numeric notation that was used in the era of the Gregorian reform. The mean spring equinoctial year was expressed to the nearest 1/3600 of a day as 365+14/60+33/3600 days ≡ 365+97/400 days. Each 1/3600 of a day is 24 seconds. Deducting a further 1/3600 of a day would have yielded the mean year that today is used for the Revised Julian calendar.

The 71/400 cycle is identical to a 30/169 cycle alternating with a 41/231 cycle (169+231 = 400), and has a mean year that is proportionately intermediate between them.

ISO 97/400 ≡ 5h 49m 12s ≡ .2425

Leap Years

Same mean year as the Gregorian calendar, with 71 leap weeks per 400-year cycle, but starting the year on the Monday that is closest to Gregorian New Year Day, as per the International Organization for Standardization ISO:8601 leap rule. It is a leap year only if the corresponding Gregorian year starts or ends on a Thursday.

Note the ragged edge of the equinox moments distribution, which is entirely due to the non-uniform spread of Gregorian leap years (intervals of 4 or 8 years, whereas uniform spread would use intervals of 4 or 5 years). The "jitter" range of the ISO equinox moments spans 7.9275 = 7 + 371/400 days, whereas the jitter range for a smoothly spread 400-year leap week calendar would be 6 + 393/400 days, so the excess jitter due to the jitter of the underlying Gregorian calendar amounts to 0.945 = 189/200 days.

41/231 8/33 ≡ 5h 49m 5+5/11s

.24..

Leap week adaptation of John Dee's leap day calendar cycle (8 leap days per 33-year cycle, note that 231 = 33 × 7 years), with 41 smoothly spread leap years per 231 years (231 is divisible by 3, 7, 11, 21, 33, 77, of which 3, 7 and 11 are prime) [cycle has 84371 days, prime divisors are 7, 17, 709]. This 231-year cycle contains 3062 anomalistic or 3100+1/2 draconic lunar months. For a symmetrical cycle, K = 115, U = 62. The primary calendar season for years 0 - 1765 - 3530 is at an ecliptic solar longitude of about 351.3° (almost 9 days before the northward equinox), click here to view chart 93 KB.

The 41/231 cycle is identical to two 8/45 cycles alternating with a 25/141 cycle (45+141+45 = 231), and has a mean year that is proportionately intermediate between them.

175/986 239/986 ≡ 05h 49m 2+394/493s

.242393509127789

239 leap days or 175 leap weeks per 986-year cycle (986 is divisible by 2, 17, 29, 34, 58, and 493, of which 2, 17, and 29 are prime) [cycle has 360129 days, prime divisors are 3, 7, 11, 1559]. For an almost symmetrical cycle, K = 492 or 493, U = 755. The primary calendar season for years 353 - 2118 - 3883 is at an ecliptic solar longitude of about 356.3° (3-4 days before the northward equinox).

The 175/986 cycle is identical to three 41/231 cycles alternating with a 52/293 cycle (231+231+293+231 = 986), and has a mean year that is proportionately intermediate between them.

The exact decimal value of the fraction 239/986 equals 0.2 followed by 112 repeating digits:
0.2 4239350912 7789046653 1440162271 8052738336 7139959432 0486815415 8215010141 9878296146 0446247464 5030425963 4888438133 87...

134/755 183/755 ≡ 5h 49m 1+149/151s

.242384105960265

183 leap days or 134 leap weeks per 755-year cycle (755 is divisible only by the prime numbers 5 and 151) [cycle has 275758 days, prime divisors are 2, 7, 19697]. This 755-year cycle contains 9338 synodic or 10093 sidereal lunar months. For a symmetrical cycle, K = 377, U = 524. The primary calendar season for years 353 - 2118 - 3883 is at an ecliptic solar longitude of about 357.2° (about 3 days before the northward equinox).

The 134/755 cycle is identical to two 41/231 cycles alternating with a 52/293 cycle (231+293+231 = 755), and has a mean year that is proportionately intermediate between them.

The exact decimal value of the fraction 183/755 equals 0.2 followed by 75 repeating digits:
0.2 4238410596 0264900662 2516556291 3907284768 2119205298 0132450331 1258278145 69536...

320/1803 437/1803 ≡ 5h 49m 1+59/601s

.2423738214

437 leap days or 320 leap weeks or 664 leap lunar months per 1803-year cycle (1803 is divisible only by the prime numbers 3 and 601) [cycle has 658532 days]. For a symmetrical cycle, K = 901, U = 524. The primary calendar season for years 353 - 2118 - 3883 is at an ecliptic solar longitude of about 358.2° (about 2 days before the northward equinox).

The 320/1803 cycle is identical to four 41/231 cycles alternating with three 52/293 cycles (231+293+231+293+231+293+231 = 1803), and has a mean year that is proportionately intermediate between them.

I usually ignore leap cycles longer than 1000 years, but this 1803-year cycle is exceptional, because it contains almost exactly 22300 mean synodic months = 100 saros periods (about 24102.9 sidereal months, about 23899.2 anomalistic months, and about 24199.9 draconic months) and therefore could be used for both a solar and a lunar calendar, for example as a solar calendar with a matching lunisolar Easter computus. Its mean lunar month = 658532/22300 = 29+2958/5575 days = 29 days 12 hours 44 minutes 2+82/223 seconds, which is slightly short for the present era but an excellent choice for a long-lasting fixed arithmetic lunisolar cycle. The denominator of the reduced fraction indicates that 5575 months = 1/4 of the full cycle = 450+3/4 mean northward equinoctial years = 25 saros periods. Compare the 1803-year cycle with other Easter computus cycles:

Easter
Computus
Years Mean Year Lunar Months Mean Month
seconds in excess
of 29d 12h 44m
Approximate decimal
seconds in excess
of 29d 12h 44m
Orthodox 19 365+1/4 235 25+25/47 25.532
Gregorian 5700000 365+97/400 70499183 2+49928114/70499183 2.7082084
Cassidy-Dee 131670 365+8/33 1628531 2+616298/1628531 2.378438
100 Saros 1803 365+437/1803 22300 2+82/223 2.367713

In the present era the longest solar eclipse saros series have only about 85 eclipses and more typically have 70 or fewer, so even if an 1803-year cycle started at the first eclipse in a saros series, that series will have expired long before the end of that 1803-year cycle. Lunar eclipse saros series contain fewer eclipses.

The exact decimal value of the fraction 437/1803 has 300 repeating digits: 0.2423738214 0876317249 0293954520 2440377149 1957848031 0593455352 1907931225 7348863006 1009428729 8946200776 4836383804 7698280643 3721575152 5235718247 3655019412 0909595119 2457016084 3039378813 0892956184 1375485302 2739877981 1425402107 5984470327 2323904603 4387132556 8496949528 5635052689 9611758180 8097615085 9678313921...

145/817 198/817 ≡ 5h 48m 59+37/817s

.24235006119951

198 leap days or 145 leap weeks per 817-year cycle (817 is divisible only by the prime numbers 19 and 43) [cycle has 298403 days, prime divisors are 7, 47, 907]. For a symmetrical cycle, K = 408, U = 293. The primary calendar season for years 353 - 2118 - 3883 is at an ecliptic solar longitude of about 0.1° (at the northward equinox).

The 145/817 cycle is identical to two 52/293 cycles alternating with a 41/231 cycle (293+231+293 = 817), and has a mean year that is proportionately intermediate between them.

The exact decimal value of the fraction 198/817 has 126 repeating digits: 0.2423500611 9951040391 6768665850 6731946144 4308445532 4357405140 7588739290 0856793145 6548347613 2190942472 4602203182 3745410036 719706...

167/941 228/941 ≡ 5h 48m 54+306/941s

.242295430393199

228 leap days or 167 leap weeks per 941-year cycle (941 is a full reptend prime number) [cycle has 343693 days, prime divisors are 7, 37, 1327]. For a symmetrical cycle, K = 470, U = 648. The primary calendar season for years 353 - 2118 - 3883 is at an ecliptic solar longitude of about 7° (about a week after the northward equinox).

The 167/941 cycle is identical to two 52/293 cycles alternating with a 63/355 cycle (293+355+293 = 941), and has a mean year that is proportionately intermediate between them.

Since 941 is a full reptend prime number, the exact decimal value of the fraction 228/941 has 941-1=940 repeating digits: 0.2422954303 9319872476 0892667375 1328374070 1381509032 9436769394 2614240170 0318809776 8331562167 9064824654 6227417640 8076514346 4399574920 2975557917 1094580233 7938363443 1455897980 8714133900 1062699256 1105207226 3549415515 4091392136 0255047821 4665249734 3251859723 6981934112 6461211477 1519659936 2380446333 6875664187 0350690754 5164718384 6971307120 0850159404 8884165781 0839532412 3273113708 8204038257 1732199787 4601487778 9585547290 1168969181 7215727948 9904357066 9500531349 6280552603 6131774707 7577045696 0680127523 9107332624 8671625929 8618490967 0563230605 7385759829 9681190223 1668437832 0935175345 3772582359 1923485653 5600425079 7024442082 8905419766 2061636556 8544102019 1285866099 8937300743 8894792773 6450584484 5908607863 9744952178 5334750265 6748140276 3018065887 3538788522 8480340063 7619553666 3124335812 9649309245 4835281615 3028692879 9149840595 1115834218 9160467587 6726886291 1795961742 8267800212 5398512221 0414452709 8831030818 2784272051 0095642933 0499468650 3719447396 3868225292...

115/648 157/648 ≡ 5h 48m 53+1/3s

.242 283950617...

157 leap days or 115 leap weeks per 648-year cycle (648 is divisible by 2, 3, 4, 6, 8, 9, 12, 18, 24, 27, 36, 54, 72, 81, 108, 162, 216, 324, of which only 2 and 3 are prime numbers) [cycle has 236677 days, prime divisors are 7, 33811]. For an almost symmetrical cycle, K = 321 or 324, U = 355. The primary calendar season for years 353 - 2118 - 3883 is at an ecliptic solar longitude of about 7.9° (about 8 days after the northward equinox).

The 115/648 cycle is identical to a 52/293 cycle alternating with a 63/355 cycle (293+355 = 648), and has a mean year that is proportionately intermediate between them.

63/355 86/355 ≡ 5h 48m 50+50/71s

.24225352112676

86 leap days or 63 leap weeks per 355-year cycle (355 is divisible only by the prime numbers 5 and 71) [cycle has 129661 days, prime divisors are 7, 18523]. For a symmetrical cycle, K = 177, U = 62. The primary calendar season for years 353 - 2118 - 3883 is at an ecliptic solar longitude of about 10.8° (almost 11 days after the northward equinox).

The 63/355 cycle is identical to four 8/45 cycles alternating with two 14/79 cycles and one 3/17 cycle (45+79+45+17+45+79+45 = 355), and has a mean year that is proportionately intermediate between them.

The exact decimal value of the fraction 86/355 equals 0.2 followed by 35 repeating digits:
0.2 4225352112 6760563380 2816901408 45070...

137/772 187/772 ≡ 5h 48m 48+96/193s

.242227979274611

187 leap days or 137 leap weeks per 772-year cycle (772 is divisible by 2, 4, 193, and 386, of which 193 is a full reptend prime number) [cycle has 281967 days, prime divisors are 3, 7, 29, 463]. This 772-year cycle contains 10233 anomalistic lunar months. For an almost symmetrical cycle, K = 385 or 386, U = 417. The primary calendar season for years 334 - 2004 - 3674 is at an ecliptic solar longitude of about 13.8° (almost 2 weeks after the northward equinox).

The 137/772 cycle is identical to a 63/355 cycle alternating with a 74/417 cycle (355+417 = 772), and has a mean year that is proportionately intermediate between them.

Because 193 is a full reptend prime divisor of 772, the exact decimal value of the fraction 187/772 equals 0.24 followed by 193-1=192 repeating digits: 0.24 2227979274 6113989637 3056994818 6528497409 3264248704 6632124352 3316062176 1658031088 0829015544 0414507772 0207253886 0103626943 0051813471 5025906735 7512953367 8756476683 9378238341 9689119170 9844559585 49...

559/3150 109/450 ≡ 5h 48m 48s

.242...

Leap week adaptation of the "Revised" Julian (New Orthodox) mean year, with 559 smoothly spread leap weeks per 3150 years = 7 × 450 years, which is half of the New Orthodox cycle that has 118 leap days per 900 years (3150 is divisible by 2, 3, 5, 6, 7, 9, 10, 14, 15, 18, 21, 25, 30, 35, 42, 45, 50, 63, 70, 75, 90, 105, 126, 150, 175, 210, 225, 315, 350, 450, 525, 630, 1050, and 1575, of which only 2, 3, 5 and 7 are prime) [cycle has 1150513 days, prime divisors are 7, 13, 47, 269]. Compare with the ragged equinox alignment of the Revised Julian calendar (two pages), and the RJiso leap rule (next row below), neither of which have smoothly spread leap years. The primary calendar season for years 334 - 2004 - 3674 is at an ecliptic solar longitude of about 13.7° (almost 2 weeks after the northward equinox).

The 559/3150 cycle is identical to five 74/417 cycles alternating with three 63/355 cycles (417+355+417+355+417+417+355+417 = 3150), and has a mean year that is proportionately intermediate between them.

RJiso 109/450 ≡ 5h 48m 48s ≡ .242...

Leap Years

Same mean year as the Revised Julian calendar shown in the row above, with 559 leap weeks per 3150-year cycle, but starting the year on the Monday that is closest to Revised Julian New Year Day. It is a leap year only if the corresponding Revised Julian year starts or ends on a Thursday.

Note the ragged edge of the equinox moments distribution, due to the non-uniform spread of Revised Julian leap years (intervals of 4 or 8 years, whereas uniform spread would use intervals of 4 or 5 years). Also note that due to its shorter mean year length the RJiso leap rule will retain satisfactory equinox alignment for about two thousand years longer than the ISO standard leap rule. RJiso Sym454 dates match ISO Sym454 dates from the 13th century until the year 2809.

74/417 101/417 ≡ 5h 48m 46+86/139s

.24220623501199

101 leap days or 74 leap weeks per 417-year cycle = half of the Brij Vij 834-year cycle (417 is divisible only by the prime numbers 3 and 139) [cycle has 152306 days, prime divisors are 2, 7, 11, 23, 43]. This 417-year cycle contains 5597 draconic lunar months. For a symmetrical cycle, K = 208, U = 62. The primary calendar season for years 334 - 2004 - 3674 is at an ecliptic solar longitude of about 15.7° (almost 16 days after the northward equinox).

The 74/417 cycle is identical to four 8/45 cycles alternating with three 14/79 cycles (45+79+45+79+45+79+45 = 417), and has a mean year that is proportionately intermediate between them.

The exact decimal value of the fraction 101/417 has 46 repeating digits:
0.2422062350 1199040767 3860911270 9832134292 565947...

159/896 31/128 ≡ 5h 48m 45s

.2421875

Same mean year as a leap day calendar having 31 leap days per 128-year cycle and as the Bonavian leap week calendar, using 159 smoothly spread leap weeks per 896-year cycle = 7 × 128 years (896 is divisible by 2, 4, 7, 8, 14, 16, 28, 32, 56, 64, 112, 128, 224 and 448, of which only 2 and 7 are prime) [cycle has 327257 days, prime divisors are 7, 46751]. This 896-year cycle contains 11082 synodic lunar months. For an almost symmetrical cycle, K = 447 or 448, U = 479. The primary calendar season for years 1670 - 3340 - 5010 is at an ecliptic solar longitude of about 20.6° (almost 3 weeks after the northward equinox).

The 159/896 cycle is identical to a 74/417 cycle alternating with an 85/479 cycle (417+479 = 896), and has a mean year that is proportionately intermediate between them.

Leap Rules for Aligning Calendars Relative to the Southward Equinox

Leap Key Mean Year Description and Comments (southward equinox = ecliptic solar longitude 180°)
SE100 actual equinoctial year The "gold standard" for the Southward Equinox, taking the New Year moment as 100+1/4 days after the astronomical equinox. Has small variations (±15 minutes) in the equinoctial year length, mainly due to gravitational interactions with Moon, Venus, and Jupiter. Keeps the equinox aligned on the 266th calendar day, and has the minimum possible "equinox jitter" (for a leap week calendar) of ±3 days. Without the extra +1/4 day offset, the equinox would align on the 266th day after 06:00h in about 3/4 of years, and on the 267th day before 06:00h in about 1/4 of years.
MSE100 mean equinoctial year The "secondary gold standard" for the Southward Equinox, taking the New Year moment as 100+1/4 days after the mean equinox. Better regulated than SE100, above, eliminating short-term fluctuations in the equinoctial year length, but the polynomials employed for calculating the mean equinox moment are valid for only ±3 millennia from the present era. Kalendis extends the valid range by using SE100 and averaging ±50 years centered on the target year. Keeps the mean equinox aligned on the 266th calendar day, and has the minimum possible "mean equinox jitter" (for a leap week calendar) of ±3 days. Without the extra +1/4 day offset the mean equinox, would align on the 266th day after 06:00h in about 3/4 of years, and on the 267th day before 06:00h in about 1/4 of years.
LASEY Linear Approximation
to the Southward
Equinoctial Year
For about 10 millennia prior to 3000 BC, the mean Southward Equinoctial year length could have been approximated with a mean year of about 365 days 5 hours 50 minutes 35 seconds. From 3000 BC to 5200 AD the equinoctial year has been getting shorter and will continue to get shorter in almost linear fashion by almost 5/2 seconds per century. After 5200 AD the mean Southward Equinoctial year length will level out at about 365 days 5 hours 47 minutes 13 seconds (±15 seconds), again for about 10 millennia.

Click here to see a chart depicting the LASEY approximation 116KB.

11/62 15/62 ≡ 5h 48m 23+7/31s

.2 4193548387 09677...

15 leap days or 11 leap weeks per 62-year cycle (62 is divisible only by the prime numbers 2 and 31) [cycle has 22645 days, prime divisors are 5, 7, 647]. Selected by Josef Šuráň to approximate what he called the "mean tropical year" for his leap week calendar reform proposal, as published in Vistas in Astronomy 1998; 41(4): 493-506.

Such a 62-year cycle can serve as an excellent approximation to the Southward Equinoctial mean year from an epoch of 1800 AD until at least 2800 AD. With 15 leap days per cycle it would have been an optimal and simple choice for the French Republican calendar.

For an almost symmetrical cycle, K = 30 or 31, U = 17. The secondary calendar season for years 630 - 2205 - 3780 is at an ecliptic solar longitude of about 178° (about 2 days before the southward equinox). [The primary calendar season for this cycle is almost mid-way between the northward equinox and north solstice, at an ecliptic longitude of about 42.5°.]

The 11/62 cycle is identical to an 8/45 cycle alternating with a 3/17 cycle (45+17 = 62), and has a mean year that is proportionately intermediate between them.

Six serial repeats of this cycle (62×6=372 years) contain 4601 synodic or 4973 sidereal lunar months.

Leap Rules for Aligning Calendars Relative to the South Solstice

Leap Key Mean Year Description and Comments (south solstice = ecliptic solar longitude 270°)
SS10 actual solstitial year The "gold standard" for the South Solstice, taking the New Year moment as 10+1/4 days after the astronomical solstice. Has small variations (±15 minutes) in the solstitial year length, mainly due to gravitational interactions with Moon, Venus, and Jupiter. Keeps the solstice aligned on the 356th calendar day, and has the minimum possible "solstice jitter" (for a leap week calendar) of ±3 days. Without the extra +1/4 day offset, the solstice would align on the 356th day after 06:00h in about 3/4 of years, and on the 357th day before 06:00h in about 1/4 of years. The 10+1/4 day offset could be omitted if it were acceptable to take the moment of the solstice as the New Year moment.
MSS10 mean solstitial year The "secondary gold standard" for the South Solstice, taking the New Year moment as 10+1/4 days after the mean solstice. Better regulated than SS10, above, eliminating short-term fluctuations in the solstitial year length, but the polynomials employed for calculating the mean solstice moment are valid for only ±3 millennia from the present era. Kalendis extends the valid range by using SS10 and averaging ±50 years centered on the target year. Keeps the mean solstice aligned on the 356th calendar day, and has the minimum possible "mean solstice jitter" (for a leap week calendar) of ±3 days. Without the extra +1/4 day offset, the mean solstice would align on the 356th day after 06:00h in about 3/4 of years, and on the 357th day before 06:00h in about 1/4 of years. The 10+1/4 day offset could be omitted if it were acceptable to take the moment of the mean solstice as the New Year moment.
LASSY Linear Approximation
to the South
Solstitial Year
For about 10 millennia prior to 1200 AD, the mean South Solsticial year length could have been approximated with a mean year of about 365 days 5 hours 49 minutes 47 seconds. From 1200 AD to 9200 AD the solstitial year has been getting shorter and will continue to get shorter in almost linear fashion by about 9/4 seconds per century. After 9200 AD the mean South Solsticial year length will level out at about 365 days 5 hours 46 minutes 47 seconds (±20 seconds), again for about 10 millennia.

Click here to see a chart depicting the LASSY approximation 125KB.

30/169 41/169 ≡ 5h 49m 20+160/169

.24260355

41 leap days or 30 leap weeks per 169-year cycle (169 is divisible only by the prime number 13) [cycle has 61726 days, prime divisors are 2, 7, 4409]. For a symmetrical cycle, K = 84, U = 62. Although its mean year is too short for the present era, the mean South Solstitial year is getting progressively shorter, so this cycle could serve as an excellent approximation to the South Solstice from now until beyond the year 4500 AD. The secondary calendar season for years 372 BC - 1488 - 3348 is at an ecliptic solar longitude of about 230° (about mid-way between the southward equinox and the south solstice).

The 30/169 cycle is identical to two 8/45 cycles alternating with a 14/79 cycle (45+79+45 = 169), and has a mean year that is proportionately intermediate between them.

The exact decimal value of the fraction 41/169 has 78 repeating digits:
0.2426035502 9585798816 5680473372 7810650887 5739644970 4142011834 3195266272 18934911...

71/400 97/400 ≡ 5h 49m 12s

.2425

Same mean year as Gregorian calendar, but allocating 97 leap days or 71 leap weeks at intervals that are as smoothly spread as possible per 400-year cycle (400 is divisible by 2, 4, 5, 8, 10, 16, 20, 25, 40, 50, 80, 100, 200, of which 2 and 5 are prime) [cycle has 146097 days, prime divisors are 3, 7, 773]. For an almost symmetrical cycle, K = 199 or 200, U = 231. Although its mean year is too short for the present era, the mean South Solstitial year is getting progressively shorter, so this cycle could serve as a fairly good approximation to the South Solstice from now until beyond the year 6000 AD. The secondary calendar season for years 372 - 2232 - 4092 is at an ecliptic solar longitude of about 243° (almost 4 weeks before the south solstice).

The 71/400 cycle is identical to a 30/169 cycle alternating with a 41/231 cycle (169+231 = 400), and has a mean year that is proportionately intermediate between them.

Leap Rules for Aligning Calendars Relative to the Besselian New Year Moment

Leap Key Mean Year Description and Comments (Besselian New Year moment = ecliptic solar longitude 280°)
BNY actual Besselian year The "gold standard" for the Besselian Year, taking the New Year moment as the moment when Sun reaches an ecliptic longitude of 280°. Has small variations (±15 minutes) in the Besselian year length, mainly due to gravitational interactions with Moon, Venus, and Jupiter. Keeps the average Besselian New Year moment aligned on the calendar New Year Day. The BNY moment is closely related to the South Solstice, occurring about 10 days after the solstice.
LABY Linear Approximation
to the Besselian Year
For the 10 millennia prior to 1600 AD, the mean Besselian year length could have been approximated with a mean year of about 365 days 5 hours 49 minutes 44 seconds. From 1600 AD to 9700 AD the mean Besselian year will get shorter in almost linear fashion by about 12/5 seconds per century. After 9700 AD the mean Besselian year length will level out at about 365 days 5 hours 46 minutes 46 seconds (±18 seconds), again for about 10 millennia.

Click here to see a chart depicting the LABY approximation 132KB.

71/400 97/400 ≡ 5h 49m 12s

.2425

Same mean year as Gregorian calendar, but allocating 97 leap days or 71 leap weeks at intervals that are as smoothly spread as possible per 400-year cycle (400 is divisible by 2, 4, 5, 8, 10, 16, 20, 25, 40, 50, 80, 100, 200, of which 2 and 5 are prime) [cycle has 146097 days, prime divisors are 3, 7, 773]. For an almost symmetrical cycle, K = 199 or 200, U = 231. Although its mean year is too short for the present era, the mean Besselian year is getting progressively shorter, so this cycle could serve quite well from the present era until beyond the year 5000 AD. The secondary calendar season for years 372 - 2232 - 4092 is at an ecliptic solar longitude of about 243° (almost 4 weeks before the south solstice).

The 71/400 cycle is identical to a 30/169 cycle alternating with a 41/231 cycle (169+231 = 400), and has a mean year that is proportionately intermediate between them.

Leap Rules for Sidereal Calendars (Zodiac)

Leap Key Mean Year Description and Comments
7/39 10/39 ≡ 6h 9m 13+11/13s

.256410

10 leap days or 7 leap weeks per 39-year cycle (39 is divisible by 3 and 13) [cycle has 14245 days, prime divisors are 5, 7, 11, 37]. The mean year of this cycle is an excellent approximation to the mean sidereal year, useful for sidereal calendars, for example calendars that are intended to maintain good average long-term alignment relative to the positions of the constellations of the zodiac. This cycle contains 517 anomalistic lunar months. For a symmetrical cycle, K = 19, U = 28.
59/160 721/2812 ≡ 6h 9m 13+41/703s

.25 6401137980 08534850...

Lunisidereal 160-year sidereal cycle including 59 leap months for a total of 1979 months. Mean year depends on assumed length of mean month. Values shown here are based on the 43-yerm lunar cycle having 373 full months per 703 lunar months to set the mean month at 29+373/703 days = 29 days 12 hours 44 minutes 2+274/703 seconds. The resulting mean year is just 7200/9139 of a second shorter than that of the 7/39 leap week cycle given above. For an almost symmetrical cycle, K = 79 or 80, U = 19.

Such a cycle could be employed as a forward-oriented calendar intended to maintain good average long-term lunar alignment relative to the positions of the constellations of the zodiac. It would be a good idea to use a future epoch for such a calendar, to optimize the lunar cycle drift relative to the astronomical mean lunar cycle, preferably choosing an epoch close to the era when the mean month of the 43-yerm cycle will closely match the astronomical mean synodic month, around 3250 AD.

The 59/160 cycle is identical to eight 7/19 metonic cycles alternating with a single octaeteris 3/8 cycle [that is a metonic cycle truncated to 8 years by removing 11 years including 4 leap years] (19+19+19+19+8+19+19+19+19 = 160), and has a mean year that is proportionately intermediate between them.

A lunar cycle having a longer or shorter mean month could be used instead, which would accordingly set the calendar mean year = 1979 (mean month) / 160 days, and then the calendar epoch should be set to the era in which the selected mean month closely matches the astronomical mean synodic month.

This page updated May 18, 2012 (Symmetry454) = May 16, 2012 (Symmetry010) = May 17, 2012 (Gregorian)