Methodology

How We Calculate Your Chart

Most chart tools round the hard parts away. This page explains what we correct for, and why a birth chart is more fragile to get exactly right than it looks.

What gets corrected before your chart is built

Where methods genuinely disagree

Not every difference between chart tools is a bug. Some traditions define the day boundary for a birth just before or after midnight — the late Zi hour (晚子时) — differently: some advance the day at 11:00pm, others hold to midnight exactly. Both are legitimate schools. We surface which convention was applied to your specific chart rather than picking one silently and hoping it doesn't matter — for a birth near that boundary, it can change the whole chart.

The year boundary splits the same way. The popular animal zodiac changes on the lunar new year (农历新年), but professional BaZi changes the year pillar on Start of Spring (立春), a solar term near February 4th that rarely lands on the same day. For a birth in late January or early February, the two conventions can assign different signs — so it matters which question you're actually asking.

How the calculation is checked

The chart engine exists twice — once in Python, once in JavaScript — built independently so the same birth data has to produce identical output through two separate code paths, not just one path trusted twice. As of this writing, 1026 randomly generated charts, 80 hexagram divinations, and 40 composite compatibility charts have been cross-checked field by field between the two engines with zero divergence. This catches calculation bugs; it does not, by itself, prove either engine is astronomically correct — that's a separate claim, resting on the standard algorithms (Meeus-family solar and lunar position formulas) the engine is built on.

What we don't do

We don't average BaZi, Zi Wei, and Vedic readings into one blended answer. Three independently structured systems, read for the same birth moment, are shown side by side. Where they agree, that's noted. Where they don't, that's shown too — a genuine disagreement between traditions is more honest than a smoothed-over consensus that only one of them actually reached.