Research notes · Mathematics & astronomy · 5,335 words
Indian astronomy (Siddhanta / Ganita) foundations and the modern computation stack for a Jyotisha chart engine
Research notes, 2026-10-13. Primary-text passages were read directly from the Internet Archive OCR text (_djvu.txt) files. All wording is paraphrased; the few direct quotes are short and cited. Verse numbers follow the cited translation.
Primary editions found on archive.org, with public-domain (PD) status:
| Text | Edition located | archive.org identifier | PD status (assessment) |
|---|---|---|---|
| Aryabhatiya | W.E. Clark, Univ. of Chicago Press, 1930 (title page reads "Copyright 1930 by the University of Chicago") | The_Aryabhatiya_of_Aryabhata_Clark_1930 (text: djvu.txt) | US: a 1930 US publication. Under the 95-year term it entered the US public domain on 1 Jan 2026 (inference; archive.org metadata carries no license URL). Outside the US the term often runs life+60/70; Clark died in 1960, so it may still be protected in life+70 countries until the end of 2030. Verify before reproducing large passages. |
| Surya Siddhanta | Ebenezer Burgess, with W.D. Whitney's notes, 1860 (JAOS vol. 6) | in.ernet.dli.2015.96668 (text: djvu.txt); also dli.bengal.10689.17955, jstor-592174 (1858 JAOS printing) |
PD worldwide (published 1858–60; authors died in the 19th century). |
| Panchasiddhantika (Varahamihira) | G. Thibaut and Sudhakara Dvivedi, 1889 | dli.csl.6388, wg1078, in.ernet.dli.2015.110157 |
PD (1889; Thibaut died 1914). Neugebauer and Pingree's 1970 edition (pancasiddhantika1_1970) is not PD. |
| Siddhanta Shiromani (Bhaskara II) | L. Wilkinson and Bapu Deva Sastri, 1861 (bound with the Surya Siddhanta) | suryasiddhantabapudevashastri...1861_202003_287_n | PD (1861). The Kedar Datt Joshi BHU editions (1961/64) are not PD. |
| Vedanga Jyotisha (Lagadha) | R. Shama Shastry, Mysore 1936; Tilak's Vedic Chronology and Vedanga Jyotisha (1925) | qDvL_vedanga-jyotisha-edited-by-r-shama-shastry-english-1936..., in.gov.ignca.8354 |
Tilak died 1920, so PD in India. Shama Shastry died 1944, so PD in India (life+60); US status uncertain. |
| Grahalaghava (Ganesha Daivajna, 1520 CE karana) | Sudhakara Dvivedi ed., Bombay 1925; 1946/1948 editions | ogkl-grahalaghava-a-treatise-on-practical-astronomy-by-, TheGrahalaghava |
1925 Sanskrit edition is likely PD; 1946/48 commentaries are uncertain. |
Sources for the table: archive.org advanced search API queries run 2026-10-13; Clark metadata.
1. How the siddhantas define yugas, mean motions (bhaganas), manda/sighra corrections, precession, the civil day, and the five limbs of the Panchanga
Takeaway
Siddhantic astronomy is a mean-motion-plus-equation model. Each body completes an integer number of revolutions (bhaganas) in a great cycle (the mahayuga of 4,320,000 years), counted from an epoch when all mean planets were at 0° Mesha. To find a planet's place:
- Count elapsed civil days (ahargana).
- Take the mean longitude: bhagana × ahargana / civil days per yuga.
- Apply an "equation of centre" (manda) and, for the five star-planets, an "equation of conjunction" (sighra) using epicycles.
The Panchanga limbs are then simple functions of the true sidereal longitudes of the Sun and Moon:
- tithi: (Moon − Sun) / 12°
- nakshatra: Moon / 13°20′
- yoga: (Sun + Moon) / 13°20′
- karana: half-tithis of 6°
- vara: the weekday, counted from sunrise to sunrise
Cited Findings
Yuga and revolution numbers (bhaganas)
Aryabhatiya I.1–2 (Dasagitika), per Clark: in one yuga the Sun makes 4,320,000 revolutions and the Moon 57,753,336. The Earth makes 1,582,237,500 revolutions eastward. Saturn makes 146,564, Jupiter 364,224 and Mars 2,296,824; Mercury and Venus make the same number as the Sun. The Moon's apsis makes 488,219, the sighra (conjunction) of Mercury 17,937,020 and of Venus 7,022,388. The Moon's node makes 232,226 westward. The count starts at the beginning of Mesha, at sunrise on a Wednesday, at Lanka. — Clark 1930, pp. 9–10
Clark's note says the "revolutions of the Earth" seem to mean rotations of the Earth on its axis, and that the number equals the sidereal days in a yuga. The later commentator Paramesvara, who held the Earth to be stationary, tried to explain this away. — Clark 1930, p. 9
Surya Siddhanta I.29–34 (Burgess), revolutions per mahayuga:
- Sun, Mercury, Venus, and the sighras of Mars, Jupiter and Saturn: 4,320,000
- Moon: 57,753,336
- Mars: 2,296,832
- Mercury's sighra: 17,937,060
- Jupiter: 364,220
- Venus's sighra: 7,022,376
- Saturn: 146,568
- Moon's apsis: 488,203
- Moon's node (retrograde): 232,238
- Asterisms (sidereal days): 1,582,237,828
Whitney calls these "the fundamental and most important elements" of the system. — Burgess 1860, I.29–34
Burgess's notes use 1,577,917,828 civil (savana) days per mahayuga, which is sidereal days minus solar revolutions. They derive mean longitudes by proportion, for example: civil days in the yuga are to elapsed days as 4,320,000 Sun revolutions are to the elapsed revolutions. — Burgess 1860, notes
Burgess mentions the kalpa (aeon) of 4,320,000,000 years, which equals 1000 mahayugas. — Burgess 1860
Clark notes that Brahmagupta knew of two Aryabhata systems, one starting the yuga at sunrise (audayika) and one at midnight (ardharatrika). The midnight system had 300 more civil days per yuga. — Clark 1930, p. 10 n.
Time units (Kalakriyapada)
Aryabhatiya III.1–2:
- 1 year = 12 months
- 1 month = 30 days
- 1 day = 60 nadis (ghatis)
- 1 nadi = 60 vinadikas
- 1 sidereal vinadika = 6 pranas = 60 long syllables
Space is divided the same way, starting from a revolution: 12 signs × 30° × 60′ × 60″. — Clark 1930, p. 51
Aryabhatiya III.3–6:
- The difference between two planets' revolution counts is the number of their conjunctions.
- Revolutions of the Sun are solar years. Sun–Moon conjunctions are lunar months.
- Sun–Earth "conjunctions" are civil days. Revolutions of the asterisms are sidereal days.
- Intercalary months (adhimasa) = lunar months − solar months in a yuga.
- Twice (Sun + Moon revolutions) gives the number of vyatipatas.
Source: Clark 1930, pp. 51–53
Manda and sighra corrections
Clark's note on Aryabhatiya III.22–24 gives Paramesvara's procedure:
- Sun and Moon: one correction only, the manda (apsis) correction.
- Mars, Jupiter, Saturn: four steps.
- Apply half the mandaphala to the mean place.
- Apply half the sighraphala.
- Recompute the full mandaphala and apply it to the mean place.
- Apply the full sighraphala.
- Mercury and Venus: three steps.
- Apply half the sighraphala in reverse to the mandocca.
- Compute the mandaphala and apply it.
- Apply the sighraphala.
- Sign rule: the apsis equation is negative in the half-orbit beginning with Mesha and positive in the half beginning with Tula. The conjunction equation has the opposite sign.
- Terms: "manda" is the planet after the first apsis correction, "sphutamadhya" after the apsis correction, and "sphuta" (true) after the conjunction correction.
Source: Clark 1930, pp. 59–61
Aryabhatiya III.4 (with Paramesvara): revolutions of the epicycle = planet's revolutions − revolutions of its ucca (apogee or conjunction). Aryabhata treated the apsides of the five star-planets and the Sun as fixed for calculation because they move very slowly. — Clark 1930, p. 52
The rotating Earth, and eclipses (Golapada)
- Aryabhatiya IV.9 compares the sky to the view from a boat. A man moving forward in a boat sees stationary objects move backward; in the same way an observer at Lanka sees the "stationary asterisms" move westward. Clark reads this as an Earth rotating eastward. — Clark 1930, pp. 64–65
- Aryabhatiya IV.37–38 gives the physical cause of eclipses: the Moon covers the Sun, and the Earth's great shadow covers the Moon. An eclipse falls at the end of a true lunar month or half-month, when the Moon is near the node. Brahmagupta (XI.9) criticized Aryabhata here, yet elsewhere he himself attributes eclipses to Rahu. — Clark 1930, p. 78
Precession (ayanamsa) in the Surya Siddhanta
- Surya Siddhanta III.9–12: in a yuga the circle of asterisms makes "thirty score" (600) revolutions. From the ahargana one takes the part that gives the sine, multiplies it by 3 and divides by 10 to get the precession (ayana) degrees. These corrected longitudes are used for declination, shadow and ascensional difference.
- Whitney's interpretation: a libration (trepidation) of the equinox of ±27° about a fixed point near zeta Piscium, with a period of 1/600 of a mahayuga, i.e. 7,200 years. This gives a rate of 54″ per year (600 × 4 × 27° / 4,320,000 yr = 54″/yr). — Burgess 1860, III.9–12 and notes
- Swiss Ephemeris documentation: the Surya Siddhanta puts Spica/Citra at 180° in polar longitude and Revati (zeta Piscium) at 359°50′ polar longitude. These star positions are mutually incompatible, which is why several "Surya Siddhanta" ayanamsas exist. — Swiss Ephemeris docs §2.8.4
Panchanga limbs (Surya Siddhanta II.64–69, Burgess)
Nakshatra: the Moon's sidereal longitude in minutes ÷ 800′ (one asterism = 13°20′) gives the asterism. The minutes already traversed and still to go, ÷ the daily motion, give the elapsed and remaining time. Burgess's worked example: Moon at 11s 17°39′ (20,859′) is in the 27th asterism, Revati. — Burgess 1860, II.64
Yoga: (Sun + Moon longitude in minutes) ÷ the portion of an asterism (800′). The time remaining is (minutes remaining × 60) ÷ (sum of the two daily motions), in nadis. — Burgess 1860, II.65
Tithi: (Moon − Sun) ÷ 12°; Burgess discusses it under II.66. — Burgess 1860, II.66
Karana: one karana is half a tithi (6°), and there are 11 of them.
- Four are fixed (dhruva): Sakuni, Naga, Catushpada and Kimstughna. They begin from the second half of the 14th of the dark fortnight.
- Seven are movable (cara): Bava and the rest. Each occurs 8 times a month.
- Whitney notes that the 8th karana, Vishti, is the inauspicious one.
Source: Burgess 1860, II.67–69
Vara and the civil day: Aryabhata counts civil days as Sun–Earth "conjunctions" and starts his epoch at sunrise at Lanka (0° longitude on the prime meridian through Ujjain, on the equator). So the siddhantic weekday runs from sunrise to sunrise. — Clark 1930, pp. 10, 52
Inferences
Derived constants (computed here from the cited bhaganas; modern values are standard reference figures):
Quantity Aryabhatiya Surya Siddhanta Modern Civil days per yuga 1,577,917,500 1,577,917,828 — Sidereal year 365.258681 d (365d 6h 12m 30s) 365.258756 d (365d 6h 12m 36.6s) ≈365.256363 d Synodic month 29.5305818 d 29.5305879 d ≈29.530589 d The siddhantic year is about 3.5 minutes too long. That accumulated error is what drives the fixed-zodiac (sidereal) solar calendar steadily away from the seasons and modern Sun positions. The synodic month is excellent (error under 1 second for the Surya Siddhanta).
The search tool returned a claim that the Surya Siddhanta sidereal year is 365.2563627 d, "within 2 s" of modern. That figure is the modern value. The text's own constants give 365.258756 d, so the report should not repeat the claim.
Engine design that follows from this:
- A "siddhantic mode" is easy to implement exactly. It needs integer bhaganas, an ahargana from the Kali epoch (Kali Yuga start; Aryabhata's epoch is sunrise, Wednesday at Lanka), sine tables (Aryabhata's 24 R-sines with R = 3438′), and the manda/sighra epicycle steps above.
- Each step can be shown to the user as a "worked" derivation.
Modern Panchanga software (drik ganita) keeps the siddhantic definitions of the limbs but substitutes modern true longitudes and a modern ayanamsa.
Gaps
- Not read in this pass: the Vedanga Jyotisha (5-year yuga, 1,830 days), Panchasiddhantika, Siddhanta Shiromani and Grahalaghava passages. Their archive.org identifiers are listed above, but their bhaganas, epicycle sizes and karana-text shortcuts still need extraction.
- The Surya Siddhanta's epicycle dimensions (II.34–38) and sine table (II.15–27) were not extracted. They are needed for a faithful siddhantic mode.
- PD status of Clark 1930 outside the US was not verified against a legal source.
2. How accurate are siddhantic positions compared with modern ephemerides, and is "ancient calculation vs NASA" a product angle?
Takeaway
No rigorous, peer-reviewed, full-planet benchmark of Surya Siddhanta longitudes against JPL across dates was found. Available figures are indicative only:
- Sun: about 0.1°
- Moon: about 1°
- Mars: 2–3° or worse
The academic literature (Indian Journal of History of Science) evaluates individual parameters, not end-to-end positions. A side-by-side "Siddhanta vs JPL" view is a credible and differentiating product feature, and at least one Panchang site and one developer blog already do versions of it.
Cited Findings
A commercial Panchang site's learning module gives approximate errors:
- Surya Siddhanta: about 0.1° (Sun), about 1° (Moon), 2–3° (Mars).
- Meeus algorithms: about 0.01° (Sun), about 0.5° (Mars).
- JPL DE440: micro-degree level.
It argues a 1° Moon error shifts tithi end times by up to about 2 hours. Method undisclosed; low reliability. — dekhopanchang.com module 16-3
Narayanan and Oak (2023) studied the Surya Siddhanta's planetary node and apsis parameters. They suggest the data may be heliocentric: this fits Mars, Jupiter and Saturn but not Mercury and Venus. The directions of motion are correct, but the rates are about two orders of magnitude too slow. — IJHS 58(2)
A. Narayan, IJHS vol. 45 issue 4, discusses Surya Siddhanta cosmological cycles and its precession value. — IJHS Vol45_4_1
A developer blog describes building a "100% Bharatiya ephemeris" from classical texts and benchmarking it against NASA/JPL. This shows existing interest in the side-by-side concept. — dev.to post
A February 2026 Zenodo preprint (unreviewed, independent author) compares the Surya Siddhanta with modern values. — Zenodo 18814522
Burgess and Whitney themselves (1860) computed mean planetary positions from the Surya Siddhanta for 1 Jan 1860, midnight at Ujjain, and compared them with contemporary European tables. Their notes include a table of the "errors" of the Surya Siddhanta's mean motions, back-calculated from the errors observed in 1860. — Burgess 1860, notes to ch. I
Inferences
The main error sources are:
- the long sidereal year (about 3.5 min/yr, accumulating since about 500 CE)
- fixed or very slow apsides and nodes
- simplified epicycle models with no planetary perturbations
- for the Moon, no evection or variation terms
Errors are therefore smallest near the text's epoch of calibration (about 5th–11th century) and grow with time.
Product angle (recommended):
- A "Two skies" panel shows the same moment computed by the selected siddhanta (Aryabhatiya or Surya Siddhanta mean+manda+sighra) and by the modern ephemeris, with the difference in degrees and the shift in tithi/nakshatra end times.
- It is educational, culturally respectful, and uncommon in polished form.
- Frame it as a tribute to measured history, not a debunking. Many traditional (vakya/siddhantic) panchangas are still published, so the delta is genuinely useful.
The engine could also generate its own accuracy study by sweeping dates from 500 CE to 2100 CE against JPL. That would fill the literature gap and be publishable content.
Gaps
- No peer-reviewed, multi-planet, multi-epoch Surya Siddhanta vs JPL error curve found. Pingree, Plofker or Billard ("L'astronomie indienne", 1971, which dated siddhantas from their error minima) would be the right sources but were not retrieved.
- Vakya (Tamil/Kerala) panchanga vs drik discrepancy magnitudes were not sourced.
3. The modern stack: Swiss Ephemeris, JPL DE440/441, VSOP87/ELP, astronomy-engine, Moshier — licensing, accuracy, and browser / Cloudflare Workers suitability
Takeaway
There are two practical paths:
- Swiss Ephemeris (DE431/DE441-based, 0.001″ fidelity to JPL; ships every Jyotisha ayanamsa and Indian house system). Free only under AGPL, which reaches network services. The alternative is a paid Professional License (the shop lists an unlimited license at CHF 700).
- astronomy-engine (MIT license, about 116 KB JS, ±1′ vs NOVAS). It runs anywhere, including browsers and Workers, but you must implement ayanamsa, houses and the Panchanga yourself.
JPL DE440/DE441 is the authority both ultimately trace to and should be the validation reference.
Cited Findings
Swiss Ephemeris licensing (official sources)
- The LICENSE in the official repo is a dual license: AGPL or the Swiss Ephemeris Professional License. The choice must be made "before any public service using the developed software is activated". Choosing AGPL obliges you to place the whole project under AGPL or a compatible license. — aloistr/swisseph LICENSE
- The same LICENSE says the authors' and Astrodienst's names must not be used to promote derived products, apart from the copyright notice. — aloistr/swisseph LICENSE
- The official price page lists the Free Edition at CHF 0 and the Professional Edition, "unlimited license", at CHF 700.00, converted to EUR/USD at current rates. Only the license is sold, under a signed contract emailed to order@astro.com; the software itself is downloaded from the public GitHub repo. It links a "professional license english version 2026-09" PDF for full terms. — astro.com swephprice_e.htm
- Conflict: the general documentation (©1997–2022) lists CHF 750 for the first license, CHF 400 for each additional license, and CHF 1550 unlimited. — swisseph.htm §1.1. Treat the price page (current, references a 2026-09 contract) as authoritative and confirm with Astrodienst before purchase.
- Latest GitHub release tag is v2.10.3bfinal, published 2026-08-02. — GitHub API, aloistr/swisseph releases
Swiss Ephemeris accuracy and data
Based on DE431 since v2.00 (Feb 2014), and on DE441 since May 2026. The compressed data reproduces JPL "with 0.001 arcseconds precision" over 13201 BC to AD 17191.
File sizes: planets 27 MB, Moon 70 MB, about 97 MB total, compared with 2788 MB for the original JPL file.
The Moshier semi-analytic fallback (DE404-fitted, 3000 BC to 3000 AD) needs no files. It is accurate to under 0.1″ for planets and about 3″ for the Moon.
Source: swephinfo_e.htm
The general docs put Moshier's deviation from JPL at "below 1 arc second" for planets and "a few arc seconds" for the Moon. This is a looser figure than the info page's 0.1″. — swisseph.htm
The 600-year file pair for 1800–2400 CE is small:
sepl_18.se1is 484,061 bytes andsemo_18.se1is 1,304,771 bytes (HTTP Content-Length from the official repo). — aloistr/swisseph/ephePrecession model is Vondrák/Capitaine/Wallace 2011. Delta T follows Stephenson, Morrison & Hohenkerk (2016) for dates before 1948. — swisseph.htm
JPL DE440/DE441 (NASA JPL SSD)
DE440 (Park et al. 2021) is JPL's latest ephemeris with fully consistent planetary and lunar-laser-ranging data. Its core–mantle damping term makes it unsuitable for extrapolating more than several centuries.
DE441 drops that term to cover a longer span. Its planets agree with DE440 to within 1 m; the Moon differs by about 10 m along-track at 100 years from present, growing quadratically.
Files are Chebyshev polynomials over about 32-day intervals, in TDB. Horizons serves DE441. SPICE is the recommended reader.
Source: JPL SSD eph_export
astronomy-engine (Don Cross)
MIT license, with ports in C, C#, JavaScript (browser and Node), Python and Kotlin.
Accuracy is "within ±1 arcminute", always within 1′ of NOVAS. It uses VSOP87, is validated against NOVAS C 3.1, and uses a custom integrator for Pluto (checked against TOP2013).
Minified JS is under 120 KB (116,485 bytes).
Functions include rise/set/culmination, moon phases and ecliptic coordinates.
Source: cosinekitty/astronomy
Latest JS release tag is v2.1.19 (2023-12-14). It is mature but not recently updated. — GitHub API
Inferences
- AGPL and a website: AGPL §13 requires offering source to network users. A closed-source commercial site that calls Swiss Ephemeris server-side (Worker or backend) must either open-source the whole service under AGPL or buy the Professional License. Doing the calculation client-side via WASM is still "distribution" to users, so it is also covered. The LICENSE wording explicitly names "public service".
- Recommended architecture for a precise, original engine:
- Core: Swiss Ephemeris (C compiled to WASM), bought under the CHF 700 Professional License, with only the 1800–2400 files bundled (about 1.8 MB). Moshier covers dates outside that range with no files, at about 1″ accuracy — far finer than any astrological need.
- This gives exact parity with Jagannatha Hora / Astro.com reference outputs, which matters for user trust.
- Fully permissive alternative: astronomy-engine (MIT) plus your own ayanamsa (Lahiri via an IAU 2006 precession of a fixed epoch value, or True Chitra via the Spica position), sidereal time, Ascendant formula and Panchanga solvers.
- The ±1′ accuracy translates to about 2 minutes of error in Moon-driven tithi/nakshatra end times (the Moon moves about 0.55′ per minute of time). It is negligible for lagna, since the Ascendant moves about 1° per 4 minutes.
- Fine for most products, but not for "to the second" Panchanga claims.
- Truth reference for CI testing: JPL DE440/DE441 via Horizons or SPICE (public, US-government data). VSOP87/ELP-2000 analytic series (published, freely usable coefficients) are another option for a self-written engine.
- Core: Swiss Ephemeris (C compiled to WASM), bought under the CHF 700 Professional License, with only the 1800–2400 files bundled (about 1.8 MB). Moshier covers dates outside that range with no files, at about 1″ accuracy — far finer than any astrological need.
- Cloudflare Workers: both astronomy-engine (pure JS, 116 KB) and a Swiss Ephemeris WASM build with Moshier-only or 18xx files fit comfortably. The full 97 MB Swiss file set does not belong in a Worker. Serve it from R2 or limit the date range instead.
Gaps
- Not obtained: the Swiss Ephemeris Professional License 2026-09 PDF terms. Open questions are whether "unlimited" covers multiple products or domains and SaaS use, and whether a client-side WASM distribution is covered. Confirm with order@astro.com.
- Cloudflare Workers script-size limits were not re-verified for 2026.
- DE440/DE441 exact time spans were not fetched from Park et al. (2021), DOI 10.3847/1538-3881/abd414. Swiss Ephemeris states its own span as 13201 BC–AD 17191.
- No license-verified JS/WASM Swiss Ephemeris npm package was audited. Any such package inherits the AGPL.
4. Ayanamsa options and their definitions; the authority of the Indian Ephemeris and Rashtriya Panchang
Takeaway
Lahiri (Chitrapaksha) is India's official ayanamsa. The Calendar Reform Committee (CSIR, chaired by Meghnad Saha, secretary N.C. Lahiri) fixed it at 23°15′00″ on 21 March 1956, 0h ET. The Positional Astronomy Centre (IMD, Kolkata) maintains it in the Indian Astronomical Ephemeris and the Rashtriya Panchang.
The other ayanamsas differ from Lahiri by 4–5′ (KP) up to about 0.9° (Fagan–Bradley, Western sidereal). The 0.9° comes from comparing Fagan–Bradley's 24°02′31″ with Lahiri's 23°09′31″ for 1950, both from the Swiss Ephemeris docs. Raman's offset from Lahiri (commonly about 1.5° in software) was not sourced here. The engine should default to Lahiri and expose the others.
Cited Findings
Swiss Ephemeris SE_SIDM_LAHIRI (1): 23°15′00.658″ at 21 March 1956, 0:00 TDT, following IAE 1985; this is the Swiss Ephemeris standard Lahiri (Spica J2000 at 179°58′58″). Variant no. 46 ("Lahiri ICRC", pre-1985 IAE/IENA) uses exactly 23°15′00.0″.
The ICRC declared the Spica/Citra-based ayanamsa the Indian standard in 1955. It became the basis of the IENA, the IAE and the Rashtriya Panchang.
Swiss Ephemeris concludes the 1956 value is a true ayanamsa (nutation included), not a mean one.
Source: swisseph.htm §2.8.5
The Swiss Ephemeris docs include Appendix E: "How to compare the Swiss Ephemeris Lahiri Ayanamsha with Indian Astronomical Ephemeris (IAE)". — swisseph.htm
True Chitrapaksha (SE_SIDM_TRUE_CITRA, 27): Spica is always exactly at 180° ecliptic longitude, accounting for its proper motion. When the precession model is updated, star-anchored ayanamsas like this need no correction, whereas the epoch-defined IAE Lahiri does. — swisseph.htm; constants in swephexp.h
Krishnamurti (SE_SIDM_KRISHNAMURTI, 5): 4–5′ from Lahiri; Krishnamurti called the difference "negligible". The Swiss Ephemeris also has a Krishnamurti/Senthilathiban variant with zero ayanamsa at 21 March 291 CE, 6:10:29 TT. — swisseph.htm §2.8.6
Raman (SE_SIDM_RAMAN, 3): based on Bhaskara II's assumed 11° in 1183. Raman himself gave 389 CE as the zero-ayanamsa year. — swisseph.htm
Fagan/Bradley (SE_SIDM_FAGAN_BRADLEY, 0): 24°02′31.36″ on 1 Jan 1950, with Spica at 29°06′05″ Virgo; it is the main Western sidereal standard. — swisseph.htm §2.8.2
Other siddhanta-anchored ayanamsas:
- True Revati: zeta Piscium at 359°50′.
- True Pushya: delta Cancri at 106°, proposed by P.V.R. Narasimha Rao.
- Surya Siddhanta/Aryabhata variants anchored at 499 CE (Ujjain noon).
Source: swisseph.htm
Institutional history:
- CSIR appointed the Calendar Reform Committee in November 1952, chaired by Meghnad Saha.
- The report went to CSIR in 1955, and the government adopted the unified national (Saka) calendar from 21 March 1956.
- IMD took over the residual work, including the Indian Ephemeris and Nautical Almanac and the Rashtriya Panchang, on 1 Dec 1955. That unit became the Positional Astronomy Centre, which has published the Rashtriya Panchang since Saka 1879 (1957–58).
Source: PAC Kolkata history (via search snippet)
Lahiri's Indian Ephemeris takes 285 CE (Saka 207) as the zero-ayanamsa year. — search snippet quoting the Ephemeris preface (Scribd copy); secondary.
Conflict on adoption year: one Ephemeris preface says it was adopted by the government in 1953, while other sources say 1955/56. — same Scribd snippet vs PAC history
Don't confuse the two 23°15′ figures. 23°15′ is also the Sun's tropical longitude at which the national calendar's Vaisakha begins — a coincidence of value, not the ayanamsa. — webexhibits Indian calendar
Inferences
- Default to IAE-style Lahiri (true, with nutation), since that matches the Rashtriya Panchang, Jagannatha Hora's default and most Indian software. Offer True Chitra, KP (with Placidus houses), Raman and Fagan–Bradley as options.
- If implementing Lahiri without Swiss Ephemeris: start from 23°15′00.658″ at JD(TT) 2435553.5 (21 Mar 1956 0h), add general precession in longitude (IAU 2006 / Vondrák 2011), then add nutation in longitude for the true value. Expect differences of a few hundredths of an arcsecond against Swiss Ephemeris, depending on the precession model used.
Gaps
- The 1955 Calendar Reform Committee Report itself was not read. A copy appears to be on archive.org ("History of Calendar Panchanga Committee"): ia801000 PDF.
- Current PAC publication details (Rashtriya Panchang 2026–27 availability and price) were not verified.
5. House systems, lagna, sunrise definitions, time zones / historical time in India, geocoding
Takeaway
Jyotisha mostly uses whole-sign houses (rasi = bhava), with Sripati (Porphyry midpoints) used for bhava-chalita, and Placidus specifically in KP. The lagna is the sidereal ecliptic longitude of the eastern horizon.
Sunrise conventions differ:
- the Hindu siddhantic rising (disc centre, no refraction), as Swiss Ephemeris's SE_BIT_HINDU_RISING
- the modern upper limb with refraction
This must be a user-visible option because it moves tithi/vara boundaries. India's civil time has a messy history, all captured in IANA tzdb Asia/Kolkata, but local city times (Bombay, Calcutta) persisted after 1906 and need special handling. GeoNames (CC BY 4.0) is the standard open gazetteer.
Cited Findings
Whole Sign houses: the first house begins at the start of the sign containing the Ascendant; "still used in Hindu astrology".
Porphyry: each quadrant is trisected equally on the ecliptic.
Sripati: "a traditional Indian house system". Compute Porphyry cusps first; each Sripati cusp is then the midpoint between consecutive Porphyry cusps (e.g. H1′ = H12 + (H1 − H12)/2).
Placidus, Koch, Equal and the others are also available in Swiss Ephemeris.
Source: swisseph.htm §6.2
Swiss Ephemeris rise/set flags: SE_BIT_DISC_CENTER (256), SE_BIT_DISC_BOTTOM (8192), SE_BIT_NO_REFRACTION (512), and
SE_BIT_HINDU_RISING = DISC_CENTER | NO_REFRACTION | GEOCTR_NO_ECL_LAT. — swephexp.hIANA tzdb
Asia/Kolkata:Offset Name In force until 5:53:28 LMT (Kolkata) 28 Jun 1854 5:53:20 HMT ("Howrah Mean Time?") 1870 5:21:10 MMT (Madras local time, the railway/telegraph time) 1 Jan 1906 5:30 IST — 6:30 (+1h war time) — Oct 1941 to 15 May 1942 6:30 (+1h war time) — Sep 1942 to 15 Oct 1945 5:30 IST thereafter Source: tz
asiafileThe tz commentary says that from 1 Jan 1906 railways and telegraphs switched to +0530, but some municipalities kept their former time. Calcutta time was +0554 per the Indian Year Book 1936–37. It also warns: "Good luck trying to nail down old timekeeping records in India." — tz
asiafileGeoNames: dump data is licensed CC BY 4.0. The gazetteer files are
cities500(about 185k),cities1000(about 130k) andcities5000(about 50k). Each place carries an IANA timezone id. — GeoNames readme
Inferences
Lagna:
- Compute local apparent sidereal time from UT1 plus longitude.
- Get the RAMC and true obliquity.
- Ascendant = atan2(cos RAMC, −(sin RAMC·cos ε + tan φ·sin ε)), tropical.
- Subtract the ayanamsa.
Precision here mostly depends on the birth time and on Delta T / UT1, not on the ephemeris. The Ascendant moves about 1° per 4 minutes, so a birth time error of 1 minute (about 15′) outweighs any ephemeris difference.
Historical Indian time must be explicit in the UI. A pre-1906 Bombay birth recorded in "Bombay time" (about +4:51) or a Calcutta birth before 1948 in "Calcutta time" (+5:53:20 / +5:54) is not what tzdb
Asia/Kolkatareturns. The engine should:- use tzdb by default
- offer "local mean time" (from longitude) and named historical offsets (Bombay, Calcutta, Madras) as overrides
- show the war-time +6:30 (1942–45) adjustment clearly
Pakistan/Bangladesh/Sri Lanka/Nepal births (
Asia/Karachi,Asia/Dhaka,Asia/Colombo,Asia/Kathmandu+5:45) need the same care.Sunrise options to expose:
- drik/modern: upper limb, 34′ refraction, topocentric
- traditional/Hindu rising: disc centre, no refraction
Store the choice with each Panchanga. Vara changes at sunrise, not midnight.
Geocoding:
- GeoNames
cities500plus admin names, with attribution, is enough for Indian villages above 500 population. - Add alternate names (Hindi/Telugu, etc.) from
alternateNamesV2for local-language search. - Wikidata (CC0) is a no-attribution supplement.
- GeoNames
Gaps
- Not sourced: Bombay Time's exact offset and end date (commonly given as +4:51 until 1955), and Calcutta Time's end (often given as 1948). The tz file was only partially read, and both figures need a primary citation.
- Not sourced from a primary KP text: KP's use of Placidus and the sub-lord tables.
- Not sourced: Jagannatha Hora's default sunrise convention.
6. Validation: how to test the engine against known references
Takeaway
Validate in layers:
- Raw positions against JPL Horizons (DE441) and the Astronomical Almanac.
- Ayanamsa against the Indian Astronomical Ephemeris, following Swiss Ephemeris Appendix E.
- Charts and Panchanga against Jagannatha Hora (Swiss Ephemeris-based) and published drik panchangas, including the Rashtriya Panchang.
- The siddhantic mode against the worked examples in Burgess's Surya Siddhanta notes.
Cited Findings
The Swiss Ephemeris docs carry test recipes:
- Appendix D: comparing with the Astronomical Almanac (apparent positions), online and printed.
- Appendix E: comparing Lahiri ayanamsa with the IAE.
- A worked comparison with JPL Horizons, which needs care over year numbering: Horizons omits year 0, so 1 BCE is astronomical year 0.
Source: swisseph.htm
JPL Horizons serves DE441 positions. SPICE is the recommended bulk reader. — JPL SSD
Burgess's notes contain fully worked examples that a siddhantic-mode implementation can use as golden test vectors:
- mean planet positions for 1 Jan 1860, midnight at Ujjain
- the Moon at 11s 17°39′, in Revati, with times to the nakshatra end
- yoga counting
Source: Burgess 1860
astronomy-engine is itself validated against NOVAS C 3.1 (always within 1′). — cosinekitty/astronomy
Inferences
- Suggested test suite:
- About 10,000 random instants from 1800 to 2100: compare geocentric apparent tropical longitudes of the Sun, Moon and planets with Horizons. Tolerance: 0.01″ with Swiss Ephemeris, 1′ with astronomy-engine.
- Lahiri ayanamsa on 1 Jan of each year from 1956 to 2030 against IAE/Rashtriya Panchang tabulated values. Tolerance: 0.1″.
- About 200 celebrity or well-documented charts, especially pre-1947 Indian births, plus edge cases at high latitude and near sign/nakshatra cusps. Compare lagna, D9/D60, dasha start dates and Panchanga against Jagannatha Hora exports with matching settings: ayanamsa, true or mean node, sunrise convention.
- Tithi/nakshatra end times for a full year at Ujjain, Delhi and Chennai against a drik panchanga. Tolerance: 1 minute or better with Swiss Ephemeris.
- Golden vectors from the Burgess and Clark examples for the siddhantic mode.
- The largest real-world discrepancies will come from conventions (true or mean Rahu, sunrise definition, Delta T, historical time zone), not from the ephemeris. Each needs an explicit setting and a test.
Gaps
- Jagannatha Hora's licensing, export format and default settings were not verified (freeware by P.V.R. Narasimha Rao; Windows-only).
- No published, machine-readable panchanga test dataset was located.