Saju vs Bazi: what actually differs?
The short, honest version — from the code, not folklore.
Almost nothing in the arithmetic. Saju (사주, Korean) and Bazi (八字, Chinese) name the same chart — four pillars, eight characters, built from the year, month, day and hour you were born. Korea inherited the system from China centuries ago and gave it a Korean name; the pillars themselves are computed the same way either side of the border. In Bokki's code there is exactly one function, getFourPillars(), and it has no “tradition” argument. Ask it for Seoul or for Beijing and it runs the identical steps. What genuinely changes between the two is not the formula — it is how far your birthplace sits from the meridian your country keeps clock time by, and that turns out to matter more than the label on the chart.
getFourPillars(birthDate, birthTime, placeId) takes a date, a clock time, and a place — never a tradition. Every pillar it returns comes from the same Julian-Day arithmetic and the same 24 solar terms (절기) for the month boundary and 立春 for the year boundary, whether the birthplace is Seoul or Beijing. Pick two cities and the year, month and day pillars come out identical: for a birth on 20 March 1995, both give 乙亥 年 · 己卯 月 · 庚戌 日. The only pillar that can move is the hour pillar, and only because it is the only one that depends on where on Earth you were standing.
The hour pillar uses apparent solar time at the birthplace, not the clock: your longitude against the timezone meridian, plus the equation of time. Korea keeps time on the 135°E meridian even though the country sits at 126–129°E, so the correction is a steady −32 to −40 minutes almost everywhere. China keeps one time zone on the 120°E meridian, close to its populous eastern coast, so the correction there is usually much smaller: our own PLACES table gives Seoul −40 minutes and Beijing −22 minutes for the same date. That gap is large enough to flip an hour branch. Run the same clock time, 07:25 on 20 March 1995, through Bokki twice: born in Seoul, the corrected time is 06:45, before the 07:00 boundary, giving hour pillar 己卯; born in Beijing, it is 07:03, after the boundary, giving 庚辰. Same formula, same clock time, different city — different hour pillar.
There is one more place the answer can split, and it is not a Korea-versus-China line at all: how to treat 子時, the two hours (23:00–01:00) that straddle midnight. One school, 야자시 (晚子時, “late zi”), keeps the day pillar where it is and takes the hour stem from the next day. Another, 자정 (子正), rolls the day pillar itself over at midnight. Both conventions are argued inside Korean Saju circles and inside Chinese Bazi circles — this split runs through each tradition, not between them. Bokki's calendar library defaults to 야자시, and we pinned that choice with a regression test so a library upgrade cannot silently flip it on us.
There is no “Bazi mode” toggle in Bokki — if you want to compare the two traditions for real, the only input that changes anything is the birthplace. Beyond that: we compute exactly four special stars (천을귀인, 도화, 역마, 화개), not the much longer catalogues either tradition also keeps (양인살, 괴강살, 원진살, and more). We do not pick one school's strength method over another's — 억부 and 조후 are both in the engine, laid out in our 용신 article, but 병약, 통관 and 종격 are not. We do not model historical daylight-saving rules, so a birth during a DST period in either country should be checked against a second source. And we never rank Saju above Bazi or the reverse — they are one chart with two names, and the honest differences are the ones above, not a verdict on which is “more correct.”