Indebted to Isaac Starkman and his Polaris program.
Swiss Ephemeris · Kühr proportional poles · Naibod key
Local calculation
01 · Natal chart
Start with birth data
Swiss Ephemeris is included. All calculations stay on this device.
City lookup fills coordinates only. Enter the historical UTC offset used on the birth record; for records explicitly using local mean time, select that time basis.
Calculated speculum and chart constants
Factor
Longitude
Latitude
RA
Declination
MD
SA
Pole
OA / OD under pole
03 · Output
Primary directions by absolute orb
Native—
Birth—
Event—
Through—
Naibod arc—
Isaac’s table: subtly highlight matching aspects scoring at least 4 points.
Forming means the orb decreases as life-arc advances; separating means it widens. Results are sorted strictly by absolute orb.
Full precision is retained for the calculated natal positions and proportional poles.
Enter birth data, select the event date, then calculate. Direct and converse results will be interleaved by orb.
Method and fixed rules
Planetary factors. Birth data uses apparent geocentric Swiss Ephemeris positions, true obliquity and UT1 sidereal time. MD / SA is calculated from the full-precision MD and SA. The Kühr proportional pole is then calculated as tan p = (MD / SA) × tan φ, followed by sin ADp = tan p × tan δ. Eastern factors use OA = RA − ADp; western factors use OD = RA + ADp.
Angles and cusps. Signed poles retain the geographic hemisphere. Their 30°-spaced ascensional coordinates are advanced or regressed with the same primary arc. The Topocentric cusp pole is reconciled to the calculated natal cusp position, RAMC, obliquity, and terrestrial latitude before the directed longitude is recovered.
Event highlighting. Both modes use Isaac’s 50-category list and Topocentric Primary Directions aspect weights from the existing Rectifier. A subtle green tint and points label identify individual aspects scoring at least 4 points in single-date mode, and every positive-scoring maturity in Date list mode. Changing the category updates highlighting and points immediately. Weights do not change the orb limits or ordering. In single-date mode, intermediate cusps are displayed at the event’s preferred end of their axis, with the complementary aspect and longitude when needed. Angular cusps remain unchanged. Copy, CSV and print follow the displayed contact; expandable calculation details identify the original contact. Category 15 uses 8th, 12th and 5th, like category 16. Categories 41–50 name whole axes, so either named end is retained. Opposite house axes and both Nodes follow the same table mappings. Category 19 is retained as unused. Unidentified matrix factor 11 and Fortune receive no inferred weights.
Timing. Birth hours, minutes and seconds determine the natal sky. Event maturity remains date-based, using the local birth calendar date as in the original calculator. primary arc = elapsed calendar days × 0.00269861°. Single-date mode tests the selected day; range mode solves every exact crossing inside the interval and assigns it to the nearest calendar date. No event-date ephemeris is consulted.
Aspects.0°, 30°, 45°, 60°, 90°, 120°, 135°, 150°, 180°. Single-date mode uses strict orbs under 12′ for conjunction/opposition and under 6′ for other aspects, and reports forming or separating. Its optional surrounding view adds 6′ to the applicable normal limit, giving 18′ for conjunction/opposition and 12′ for the other aspects; results outside the normal limits are marked nearby. Range mode searches both motions, samples at no more than 0.25° of primary arc, brackets each crossing, and refines the root. Cusp-to-cusp pairs are limited to conjunction and opposition.
Accuracy, validation and source
Embedded Swiss Ephemeris 2.10.03 with Swiss planetary and lunar data, 1800–2399. Missing data stops calculation; it never silently switches to an analytical fallback. Browser must support WebAssembly. Gregorian dates; explicit historical UTC offset or local mean time. Ordinary semi-arc calculations stop for circumpolar factors and latitudes at or above 66°.
Tested on 25 charts (1800–2399) at northern, equatorial and southern latitudes: 1,100 position comparisons against native Swiss Ephemeris, 6,250 forward direction checks and 1,180 independently calculated maturities. All passed. Chromium file:// testing with networking disabled made zero external requests. A 1-second birth-time adjustment changed RAMC by 15.04″ in the 1962 test chart. The Node formula was subsequently corrected to the Kühr proportional pole, with Mean Node as the default. The January 25, 2007 reference gives converse Node sextile natal 3rd at 6′08″, visible with extended orbs. Janus tables display whole arcseconds, while the birth-data calculation retains full precision. Fortune retains its existing zero-latitude/proportional-pole treatment; directing Fortune can therefore differ from a Janus speculum that assigns it lunar latitude and a geometric pole.
Generated and imported lunar Nodes use the same Kühr MD/SA proportional pole as planets. Mean Node is the birth-data default; True Node remains selectable. Janus input uses the supplied Node longitude, OA/OD, declination, MD/SA and quadrant, and recalculates its direction pole rather than adopting its pasted Pole/PHA. Export a Mean Node speculum to match the default birth-data calculation. Fortune retains its existing treatment. The original Kühr projection onto zero-latitude ecliptic longitudes is retained; planets with latitude need not reproduce their natal longitude at zero arc.