Welcome
HORCOM is a complete astrology program for Windows and Linux. It casts birth charts in seven house systems, optionally with topocentric positions, follows transits and directions, computes solar, lunar and planetary returns, compares two people in double wheels, composites and combines, walks the seven year phases of the Munich rhythm theory and searches whole chart collections statistically. Robert Rettig wrote and refined it from about 1989 until 2010. He computed his own ephemerides for Chiron, Quaoar, Eris and other bodies when none existed, wrote the commentary texts that come with the program, and wished for HORCOM to live on.
Start here
Installation
Download and start HORCOM on Windows or Linux, update it, and find where your settings and chart collections are kept.
Tutorial
From the first chart to reading it, the chart settings, transits, returns, directions, the Munich rhythm theory, partner charts and printing.
Robert's commentaries
Inside the program, ABOUT HORCOM and F1 open Robert Rettig's own explanations of every menu, from the introduction to directions and the Munich rhythm theory.
What you can do
- Cast a birth chart and read it with coordinates, house cusps, aspects and midpoints beside the wheel.
- Set orbs, rulers, house system and aspect colours to your way of working.
- Keep chart collections and enter births with historical time zones.
- Follow transits, returns and progressions and directions as tables, chart rings and linear graphs.
- Work with the Munich rhythm theory and its Septars.
- Compare two people in a double wheel, the 90 degree dial, a composite or a combine.
- Rectify a birth time, cast harmonics and multiple directions.
- Look up fixed stars, Arabic parts, ingresses and eclipses, and search collections with the statistics.
- Print on A5 or A4 or export PDF, SVG and PNG.
Technical reference
The pages below are for developers and for anyone curious how HORCOM calculates. Each describes one module of the C++ rewrite, explains the original mechanics it preserves, and lets Robert speak in his own words wherever his comments still tell the story best. You do not need them to use the program.
// IT IS BY NO MEANS RECOMMENDED, HOWEVER, TO REFORMULATE ROUTINES USED IN THE CALCULATION CHAIN YOURSELF. THE DEVIL IS ALMOST ALWAYS IN THE DETAIL ! // SO: IN THE CALCULATION CHAIN LEAVE EVERYTHING AS FAR AS POSSIBLE AS IT IS, ESPECIALLY THE ORDER OF THE PROCEDURES AS WELL.
Modules
core
Constants and the angle kernel. Normalisation, the quadrant arctangent, the comparison reconcilers.
PORTED · 100% tests green
ephem
The position engines. VSOP series, the Moon, Kepler orbits, his integrated ephemeris files, nutation and precession.
PORTED · 100% tests green
chart
The chart pipeline. Geocentric conversion, the protected parallax, angles and houses, the lunar points, the Part of Fortune, the heliocentric mode.
PORTED · 100% tests green
aspects
The harmonic aspect scanner, his orb system, the Schiemenz counters and the midpoints.
PORTED · 100% tests green
render
The wheel as a display list with his geometry, SVG export and the command line front end.
PORTED · 100% tests green
data
His file formats byte for byte. Chart collections, places, the 1252 text bridge, the settings stream, the statistics store with the search conditions, the commentary texts.
PORTED · 100% tests green
app
The Qt shell in the celestial theme of this handbook. The menu bar keeps the five columns of his main menu, grouped for daily work, and every program of the original stands behind them. German natively, English by translation.
THEMED · Qt 6 Widgets
Conventions of the port
Robert's comments travel with the code
Wherever one of his comments still applies to the converted routine it is
carried over verbatim, in his German wording, marked with the prefix
//RR. One comment per routine names the original HORCOM procedure
it was ported from. Code comments stay self contained, they never point at
files outside the repository.
Same numbers first
Every ported routine first reproduces the original's output and lands together with its tests, transcription pins plus independent values from the literature Robert himself used, above all Jean Meeus. Only under green tests may a routine be restructured. Where the original and the rewrite disagree, the original is presumed right.
The two integer worlds of GFA BASIC
GFA BASIC has INT, which rounds down, and FIX,
which truncates toward zero. The original uses both deliberately. The angle
normalisers ng, nb, nh are built on
INT and land in [0, period), while wz, the degree
within a zodiac sign, is built on FIX and keeps its sign. The port
maps them to std::floor and std::trunc and its tests
pin both behaviours.
Guards stay where he put them
The epsilon kk = 1e-10 appears in the original exactly where a
division or an arctangent argument could hit zero. The port adds it in exactly
those places and nowhere else, because the branch behaviour of the aspect
logic depends on it.
Verification
The test suite currently holds 131 test cases with 1622 assertions, all green,
built with MSVC at warning level 4 and with GCC and Clang on Linux, warnings
as errors on all three, and on Linux once more under the address and
undefined behaviour sanitizers. The three compilers produce byte identical
coordinate tables and wheels, see Installation. The anchors are
Jean Meeus's worked examples, the binary data files themselves and cross
checks between independent engines, the Chapront theory against the
integrated Pluto file among them. The golden reference now exists,
tests/golden holds fifty synthetic charts recorded from the
original HORCOM7P.EXE running under emulation, dates 1900 to 2012 across
both hemispheres, the equator, the polar circle and the calendar edge
cases. All 550 planet longitudes agree with the original within one arc
second of display rounding, 47 of 50 charts agree on every house cusp,
and the three exceptions are a single cusp 1.1 arc minutes off whose
cause, the early stop of the original's Placidus iteration in GFA
arithmetic, is documented there. tools/compare_golden.py
replays the comparison.