What it computes

The zodiac used here is twelve equal 30° slices of the ecliptic, starting at 0°. An ingress is the instant a body's ecliptic longitude crosses one of those twelve boundaries. Give the module a date range and a set of bodies and it returns every crossing inside the range, in time order.

Finding them is a two stage search. First a daily grid: the longitude of each body is evaluated once per day and converted to a sign number 0 to 11. Wherever consecutive days report different sign numbers, a crossing happened in between. Daily sampling cannot skip a sign, because the fastest body in the list is the Moon at roughly 13° a day, which is under half a sign.

Then bisection inside that one day, halving the interval until it is 60 seconds wide. The reported instant is accurate to the minute, which is finer than any published ingress table.

sign index = floor((longitude mod 360) / 30) 0 = Aries, 1 = Taurus, … 11 = Pisces bisection brackets the sign index, not the longitude

That last line matters more than it looks. Bracketing on the sign index rather than on a target longitude is what makes a retrograde crossing need no special handling at all. See retrograde re-entries below.

The sign ingress form with start and end dates, ten body chips and a geocentric or heliocentric frame selector
The ingress form, set to the second half of 2026. Six bodies are on by default, the Moon, Uranus, Neptune and Pluto are off.

Computed against quoted, and why the screen separates them

Two different kinds of fact appear side by side in the results table, and confusing them would be the easiest mistake to make on this page.

ColumnKindWhere it comes from
UTC, Body, Enters, DirComputedThe JPL DE421 kernel, by bisection. Reproducible, checkable against any other ephemeris.
DignityDerivedWorked out from the rulership and exaltation tables, not typed in.
Element, Ruler, CommoditiesQuotedConventions recorded in the astrological literature. Copied here, with the source named.

Every row carries a Source label so you can tell at a glance which tradition an attribution came from:

  • Gann, shown in gold. Stated by W.D. Gann in his Astro Course. Only Virgo carries this label. Gann tied Virgo and its ruler Mercury to grains, and pointed at the grain deity on the Chicago Board of Trade building as the same association rendered in stone.
  • Traditional. Classical correspondence, in the literature well before Gann.
  • Modern. A twentieth century extension of the classical scheme, on Aquarius and Pisces. Weaker provenance, and labelled as such rather than quietly mixed in.

The full lookup table sits behind the Rulership reference panel under the results, collapsed by default. It lists all twelve signs with element, modality, traditional ruler, that ruler's metal, the commodity list and the source, plus the note describing each source. Open it once and you will not need to guess what any column means again.

None of the attributions have been tested against price

"Virgo rules grains" is reported here because it is what the source says, not because this software has measured grain prices around Virgo ingresses and found anything. No such test has been run and no such claim is made. The dates are the computed part. Everything downstream of the dates is yours to test.

Every input field

FieldAccepted valuesDefaultWhat it does
Start date1900-01-01 to 2050-12-31TodayFirst day of the scan window.
End date1900-01-01 to 2050-12-31One year from todayLast day of the scan window. The range cannot exceed 10 years, or 2 years if the Moon is selected.
BodiesSun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, PlutoSun, Mercury, Venus, Mars, Jupiter, SaturnClick a chip to toggle it. At least one is required.
FrameGeocentric or HeliocentricGeocentricWhere the observer stands. Heliocentric strikes through the Sun and Moon chips, because neither has a heliocentric longitude of its own.

The Moon caps the range at two years

The Moon enters a new sign every two and a half days, about 160 ingresses a year. Over a full ten year window that is roughly sixteen hundred rows, each one costing a bisection, and nobody reads them. Select the Moon and the range limit drops to two years. The form checks this before it sends anything, and the API checks it again.

Worked example

Build a twelve month ingress calendar for the classical bodies.

  1. Open the module. Sign in, then choose Sign Ingress on the dashboard.
  2. Leave the dates as they are. Today to one year out.
  3. Leave the six default bodies on. Sun through Saturn, no Moon.
  4. Leave the frame on geocentric. That is the frame the classical rulership scheme was built in.
  5. Click Run. The summary line reports the ingress count, the frame, and the units charged.
  6. Scan the Dir column first. Everything marked ℞ is a retrograde crossing, which means that boundary is being worked more than once.
  7. Then read the Dignity column. Green is rulership or exaltation, red is detriment or fall, blank is neither.
  8. Open the Rulership reference panel under the table and read the three source notes once.
  9. Cross reference against the Ephemeris module. An ingress date that lands within a day or two of an exact aspect is the kind of coincidence worth writing down and checking against your own charts.
Sign ingress output, a time ordered table of crossings with dignity badges, element, ruler, commodities and a source label on each row
Seven months of ingresses. Gold is the sign change, green and red are dignities, and the Source column names where each attribution came from. The single ℞ on 25 October is Venus backing out of Scorpio.

Reading the chart

The wheel is drawn above the ingress table, straight after the summary bar. Every event in the table has a mark on it, placed on the sign boundary the body actually crossed.

A 360 degree zodiac wheel with twelve coloured sign sectors, each labelled with its glyph, name, ruling planet and metal, and dated ingress ticks radiating outward from the sign boundaries
Forty-seven ingresses on one wheel. Each dated tick sits on the boundary that was crossed, so a boundary with several ticks is a boundary several bodies passed through in the window you asked for.

What each part means

PartMeaning
Twelve coloured sectorsThe signs, coloured by element. Fire red, earth brown, air blue, water teal
Sector labelGlyph, sign name, then the traditional ruler and its metal, for example Cancer, moon, silver
Dated tickOne ingress. The label carries the abbreviated body and the date, for example Ven 6 Mar
Green dot on a tickA retrograde entry, meaning the body crossed that boundary going backwards
Outer degree ringAbsolute ecliptic longitude, 0 to 330 in thirties, so a sector boundary is always a round number

The element colours are fixed hex values rather than theme colours, which is deliberate. They carry meaning, so they must not swap around between the dark chart on screen and the light one you print.

Orientation

The centre of the wheel states it: 0° Aries sits at the East and longitude increases anticlockwise. That is not the astrological convention, which puts 0 Aries on the left. It matches the Square of Nine spiral instead, because being able to read both wheels the same way around is worth more here than matching a drafting habit from another discipline.

The worked example, read off the wheel

Look at the 0° Aries boundary in the picture above. Five ticks stack outward from it: Sat 14 Feb, Ven 6 Mar, Sun 20 Mar, Mar 9 Apr, Mer 15 Apr. Five bodies crossed the same boundary within about nine weeks, and the ticks are ordered so the sequence reads outward in time.

That is the thing a date-sorted table hides. In the table those five rows are scattered among the other forty-two, sorted by date and interleaved with every other boundary crossing. On the wheel they are one visible stack, and the question of which boundaries were busy in your window answers itself.

Green means retrograde, not important

A retrograde entry is worth flagging because the body will usually cross that boundary again, forward, later. It is a marker of the geometry, not a rating. See retrograde re-entries below for what the app does with them.

Reading the output

ColumnWhat it isHow to read it
UTCThe crossing instantUniversal time, to the minute, seconds truncated. Convert to your own timezone yourself. There is no local time option, deliberately, so two users comparing notes are always comparing the same number.
BodyWhich body crossedOne row per crossing per body.
EntersFrom sign → to signThe sign left and the sign entered.
DirD or ℞D is a direct crossing, forward through the zodiac. ℞ is a retrograde crossing, backwards into the previous sign.
DignityZero, one or two badgesThe essential dignity the body holds in the sign it just entered. Green for rulership and exaltation, red for detriment and fall.
Element, RulerQuoted properties of the entered signFire, earth, air or water, and the traditional ruling planet.
CommoditiesQuoted attributionNot a prediction and not a computation. See the Source column beside it.
SourceGann, Traditional or ModernWhere that commodity attribution came from. Gold means it came from Gann's Astro Course.

If the range holds no crossings for the bodies you picked, the module says so rather than showing an empty table. That is common with the outer planets, which sit in one sign for years. Pluto spends between twelve and thirty years per sign.

Retrograde re-entries, and why there are three rows

A planet in retrograde motion can cross a boundary, back over it, and cross it again. Mercury does this several times a year. The module reports all three crossings, and that is a design decision, not an oversight. Those repeat crossings are precisely what an ingress calendar in the Gann style is looking for: a boundary worked over three times across a few weeks, rather than passed once.

The boundary degree recorded for an event is the degree actually crossed. For a direct crossing that is the start of the sign being entered. For a retrograde crossing it is the start of the sign being left, because that is the same line approached from the other side.

A direction of unknown would mean the sign index moved by something other than one step forward or one step back between consecutive days. That cannot happen for any body in this list at daily sampling. If you ever see it, the run is wrong and worth reporting.

The dignity column

Four classical essential dignities are reported, and only two tables are stored:

DignityMeaningHow this module gets it
RulershipThe body rules the sign it enteredStored table, traditional (pre-Uranus) scheme.
ExaltationThe sign is the body's exaltationStored table.
DetrimentOpposite the body's rulershipDerived: the sign six places along from the one it rules.
FallOpposite the body's exaltationDerived: the sign six places along from its exaltation.

Deriving detriment and fall rather than storing them means the four can never drift out of step with each other. A body can hold two dignities at once, which is why the column shows a list. Mercury entering Virgo is both ruler and exalted, and gets two badges.

The traditional rulership scheme is used throughout, because that is the scheme Gann and his contemporaries worked with. Modern outer planet rulerships (Pluto for Scorpio, Uranus for Aquarius, Neptune for Pisces) are recorded in the reference panel for completeness and are never used to derive a dignity. Uranus, Neptune and Pluto therefore never show a dignity badge.

The CSV export

utc,body,from_sign,to_sign,boundary_deg,direction,dignities,element,modality,ruler,commodities,attribution_source

One row per ingress, saved as ingresses_<start>_<end>.csv. Multiple dignities are space separated in one field, the commodity list is comma separated inside quotes. The attribution_source column travels with the data, so the distinction between computed and quoted survives the export into your spreadsheet.

Limits and caveats

  • Equal sign zodiac, tropical longitudes. Twelve exact 30° slices from 0°. Constellation boundaries are not equal and are not what is being used here.
  • Apparent geocentric longitude. The geocentric frame uses apparent positions, which include light time and aberration. That is the same convention as every other astronomical module on the site.
  • Kernel bounds. DE421 sets the 1900 to 2050 window. Ask for anything outside it and the request is rejected before it computes.
  • To the minute, not the second. Bisection stops at a 60 second interval. Enough for any practical use, and honest about where it stops.
  • Ten year ceiling per request. Two years when the Moon is in. Longer studies need more than one run.
  • Heliocentric drops the luminaries. Neither the Sun nor the Moon has a heliocentric longitude of its own. They are removed from the run and listed under the summary as dropped, rather than silently ignored.
  • No aspects here. This module answers when a body changes sign. For conjunctions, squares and trines use the Ephemeris module.

What this tool does not tell you

It does not tell you that a market turns when a planet changes sign. It has not been back tested against price and makes no such claim. It answers one narrow question exactly: when does each body cross into the next sign, and what do the classical tables say about that sign.

Common mistakes

MistakeWhat happensFix
Selecting only outer planets over a short rangeZero results, and it looks brokenNothing is wrong. Pluto sits in one sign for decades. Widen the range or add a faster body.
Adding the Moon to a ten year rangeThe form refuses to runCut the range to two years, or drop the Moon and use the Ephemeris module for lunar detail.
Reading UTC as local timeAn ingress lands on the wrong side of a session boundaryConvert it. Brisbane is UTC plus 10, with no daylight saving.
Treating the commodity column as a signalA quoted convention gets mistaken for a tested resultRead the Source column and the reference panel. None of it has been tested against price here.
Assuming three Mercury rows are a bugDuplicate crossings get filtered out by handThey are retrograde re-entries and they are the interesting part. Check the Dir column.
Expecting a dignity badge on Uranus, Neptune or PlutoThe column looks emptyThe traditional scheme predates all three. They hold no essential dignity by design.

What it costs

Ingresses are charged on the length of the range, at 2 units per year scanned, with a floor of 1 unit. The number of bodies does not change the price.

Date rangeUnits charged
6 months2
1 year, the default2
2 years4
5 years10
10 years, the maximum20

The classical tables on their own are free. Fetching the rulership reference computes nothing, so it costs nothing. Only a dated scan is charged.

Units reset daily at midnight UTC, and a failed request costs nothing, because usage is recorded only after a computation succeeds. See pricing for the daily allowance on each plan.

Not financial advice

Crohamhurst is a calculation tool. It produces dates, degrees, levels and tables. It does not produce recommendations, signals or forecasts, and nothing in this guide is financial advice. Trading carries risk of loss.