The Sixteen Minutes at the Hour Boundary
Our original method for the life palace was missing one correction: the equation of time. All nineteen validation samples passed, yet they were blind to it — the narrowest margin was 15.6 minutes, less than the equation of time's yearly extreme of 16.4. We settled it by scanning for the exact minute the reference implementation flips.
The first thing to settle on a Chinese astrology chart is the life palace. Where it sits depends on the hour of birth; change the hour and the order of the twelve palaces changes with it, and so does the palace every planet lands in. In other words, get the conversion from birth moment to double-hour wrong, and the whole chart belongs to somebody else.
What we did was this: correct the clock time to local mean solar time using the longitude of the birthplace, then cut the day into twelve two-hour blocks. That method is missing one correction — the equation of time.
The equation of time comes from two things stacked on top of each other. Earth's orbit around the Sun is an ellipse, so the planet moves faster near perihelion and slower near aphelion; and the ecliptic crosses the celestial equator at an angle. Together they make true solar days unequal in length, and over a year the gap between true solar time and mean solar time adds up to half an hour: it peaks positive in early November, around +16.5 minutes, and negative in mid-February, around −14. In other words, if you take a clock that keeps perfectly even time and use it to note when the Sun crosses the meridian each day, those times will swing back and forth by half an hour over the course of a year.
Sixteen minutes does not sound like much. But sitting on a double-hour boundary, it becomes something else. The boundaries fall on odd hours of true solar time — 23:00, 01:00, 03:00 and so on — and anyone born within sixteen minutes on either side of such a boundary gets pushed into a different palace by the two methods. We swept the whole day: if birth moments are spread evenly across it, about 6% land in a different block because of this one term. The figure barely depends on the city, because a boundary occurs exactly twelve times a day, so the number of minutes that flip is roughly twelve times the absolute value of the equation of time. It varies with the season instead: near zero in mid-April, when the equation of time crosses zero, and up to 12% in mid-October.
Move the life palace and the palaces of career, wealth, marriage all move with it. So 6% is not a figure we can wave off: on the even-spread assumption, out of every hundred people, six had a chart from us that was off by one block.
The mistake lived a long time, and how it lived is worth writing down.
We have a validation set: nineteen birth samples, where we compare the chart we produce against a third-party charting API, item by item. All nineteen matched. For a while we treated 19/19 as proof that this part was settled. It does not carry that weight.
Among those nineteen, the one sitting closest to a boundary had a margin of 15.6 minutes. It is the two Beijing samples, clock times 09:30 and 15:30. Beijing sits at 116.4°, while clock time is anchored at 120°, and at four minutes per degree that is a gap of 14.4 minutes — so a clock time of 09:30 corresponds to a local mean solar time of 09:15.6, leaving only 15.6 minutes to the 09:00 boundary. The yearly extreme of the equation of time is 16.4 minutes, a little wider than 15.6.
In other words, those nineteen samples were blind to the equation of time. They did not fail because of luck in the sampling: put each sample's equation of time next to its own margin, and not one of them has an equation of time larger than its margin. The two closest to a boundary, at 15.6 minutes, happen to fall on a date where the equation of time is barely over 3 minutes; and the samples whose equation of time runs to ten or fifteen minutes were all taken far enough from any boundary that it could not matter. The dangerous combination simply never occurs in those nineteen samples.
What we wrote at the time was something else. We wrote that it was "structurally impossible to flip." That is treating "we did not observe it" as "it does not exist." The sentence ended up scattered across five places: a to-do list entry, two code comments, a test, and a review note. All five had to be corrected.
What kept the mistake alive for so long, though, was something else: we were measuring the wrong quantity.
To judge whether the hour conversion is right, you have to look at the life palace. What we looked at, back then, was the ecliptic longitude of the planets. The third-party API has a "true solar time" toggle, and when we flipped it the longitudes did not budge, which we read as "it does not care about the time convention either." That reading was thoroughly wrong. Ecliptic longitude is determined by Universal Time; it has nothing to do with which kind of solar time you convert clock time into, and it ought not to move. We measured a quantity that is insensitive to the very thing in question, saw "no change," and concluded there was nothing to worry about. That one went into the rules afterwards: to test the life palace, do not test the ecliptic longitude.
For which time convention the life palace should use, we found no direct statement in the historical sources. So we did not put this question to the books. We put it to the behaviour of the reference implementation. The method: not to ask what its life palace is at some given moment — that yields only "same" or "different" — but to find the minute at which it flips.
We picked two dates where the equation of time has opposite signs. 3 November 1990, where it is about +16.4 minutes, and 10 February 1990, where it is about −14.2. On those two days the flip times predicted by the two hypotheses — "it uses mean solar time" and "it uses true solar time" — are 16 minutes and 14 minutes apart, and both gaps fall inside a range we could scan.
The 3 November result: the mean-solar-time hypothesis puts the boundary at clock 01:14, the true-solar-time hypothesis at 00:57. Its own flip happened between 00:57 and 00:58; we later rescanned at 30-second steps and pinned the boundary to 00:57–00:58. That is 16.9 minutes from the mean-time prediction and 0.4 minutes from the true-time prediction. Point by point: the mean hypothesis matched 14 times, the true hypothesis 31 out of 31.
On 10 February the equation of time is negative and the two predictions swap sides. Mean solar time puts the boundary at 01:14, true solar time at 01:28, and it flips between 01:28 and 01:29. That is 14.1 minutes from the mean prediction and 0.1 minutes from the true one. Fourteen out of twenty-eight against twenty-eight out of twenty-eight.
Picking two dates with opposite signs rules out the possibility that it merely leans one way. If it simply tended to flip early or late, the errors on the two dates would point the same direction. Instead it hugs the true-solar-time prediction every time. On both occasions its flips landed on an odd hour of true solar time.
One thing by the way. In those two boundary scans, the cusps we computed and the cusps the reference implementation handed back differed by only 0.001° to 0.011°.
So we put the term in: the hour conversion now uses local true solar time, which is the longitude correction plus the equation of time. We did not delete the mean-solar-time version; it stays as a comparison case, and the two observed flip moments became a fixed check, so that anyone touching this code again gets an alarm.
It is worth being clear about one thing: this error does not affect the 0.054° of the previous piece. That step read the twelve cusps the reference implementation gives out itself, which has nothing to do with our time convention. What was affected is which block the life palace falls in, not where the boundary lies.
There are, though, a few things we have not worked out.
The one that matters most: the evidence for the conclusion above is the behaviour of the reference implementation, not a historical source. For which convention the life palace should use, we found no direct statement in the sources — so "true solar time" is a convention we adopted, and it is written into the chart's conventions block where users can see it. It is not a rule we read out of an old book.
Then there is coverage. We tested only two dates; they are the two extremes of the equation of time, but the claim that its boundary sits on an odd hour of true solar time rests, strictly speaking, on those two days. Both scans were also around the 01:00 boundary; the 23:00 boundary, which is at the same time the one that changes the date, we did not scan. And we never ran a full-year sweep.
Finally there is what the 6% rests on. It assumes birth moments are evenly spread across the day, and real birth moments are not — hospital schedules and planned caesareans push them toward daylight. So 6% is an order of magnitude, not the flip probability for any particular chart. It is the same situation as the 4.78% in the previous piece: both are measures, not frequencies under a real distribution.
If you find an error in how we read this, or know of existing work we have missed, please tell us. We will correct the article and say so.