swiss-prenatal-syzygy-1.0.0 is calculated inside the licensed Python Swiss Ephemeris service. It searches backward from one second before the natal instant, so a phase exact at birth cannot be mislabeled as preceding.
Source and editorial policy
Ptolemy, Tetrabiblos III.2 names the syzygy most recently preceding birth and distinguishes a new moon from a full moon. That passage continues into ruler selection and rectification doctrine. Stelliums uses the passage only to establish the event family; it does not automate the later historically variable judgments.
Exact algorithm
- Calculate tropical geocentric ecliptic longitudes of the Sun and Moon with swe_calc_ut.
- Scan the prior 33 days in six-hour steps for the 0-degree conjunction and 180-degree opposition roots.
- Reject signed-angle wrap crossings opposite the requested phase.
- Bisect each valid bracket until it is no wider than one second.
- Select the latest root strictly earlier than birth.
- Recalculate both luminary longitudes at the root and derive sign, natal Whole Sign place, and domicile ruler.
- Preserve phase residual, iteration count, search step, precision, engine version, and rules version.
Frozen regression references
- Dallas, January 15, 1990: full moon at 1990-01-11 04:56:48 UTC; Sun 290.7053442°, Moon 110.7053069°.
- Cape Girardeau, January 12, 1951: new moon at 1951-01-07 20:09:56 UTC; Sun 286.7275028°, Moon 286.7275185°.
- Both cases preserve positive elapsed time, one-second root precision, sub-0.2-arcsecond residual, and natal Whole Sign places.
- Return charts intentionally omit the prenatal label rather than mischaracterize an ordinary prior lunation.
Fail-closed and legacy behavior
If no valid root can be isolated in the governed search window, the natal calculation fails instead of inferring a phase. Charts created before engine 0.12.0 have no frozen syzygy record and must be recalculated; no event is backfilled from incomplete data.
