%%
%% This is file `horoscop.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% horoscop.dtx  (with options: `horoscop.sty,package')
%% This file is released to the public domain by its author, Matthew Skala.
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{horoscop}%
   [2020/07/31 v1.01 Astrological chart macros by Matthew Skala]
\newif\ifhoro@textsym\horo@textsymfalse
\newif\ifhoro@unicode\horo@unicodefalse
\newif\ifhoro@wasysym\horo@wasysymfalse
\newif\ifhoro@marvosym\horo@marvosymfalse
\newif\ifhoro@starfont\horo@starfontfalse
\DeclareOption{textsym}{\horo@textsymtrue}
\DeclareOption{unicode}{\horo@unicodetrue}
\DeclareOption{wasysym}{\horo@wasysymtrue}
\DeclareOption{marvosym}{\horo@marvosymtrue}
\DeclareOption{starfont}{\horo@starfonttrue}
\newif\ifhoro@strolog\horo@strologfalse
\newif\ifhoro@swetest\horo@swetesttrue
\DeclareOption{nocalc}{\horo@strologfalse\horo@swetestfalse}
\DeclareOption{astrolog}{\horo@strologtrue\horo@swetestfalse}
\DeclareOption{swetest}{\horo@strologfalse\horo@swetesttrue}
\newif\ifhoro@egrep\horo@egrepfalse
\DeclareOption{egrep}{\horo@egreptrue}
\newif\ifhoro@wheels\horo@wheelstrue
\newif\ifhoro@templates\horo@templatestrue
\DeclareOption{nowheels}{\horo@wheelsfalse\horo@templatesfalse}
\DeclareOption{notemplates}{\horo@templatesfalse}
\ProcessOptions\relax
\ifhoro@textsym\else
  \ifhoro@unicode\else
    \ifhoro@wasysym\else
      \ifhoro@marvosym\else
        \horo@starfonttrue
      \fi
    \fi
  \fi
\fi
\RequirePackage{iftex}%
\ifhoro@wasysym
  \RequirePackage{wasysym}%
  \let\horow@sySquare\Square
\fi
\ifhoro@marvosym
  \RequirePackage{marvosym}%
  \let\horom@rvAries\Aries
  \let\horom@rvTaurus\Taurus
  \let\horom@rvGemini\Gemini
  \let\horom@rvCancer\Cancer
  \let\horom@rvLeo\Leo
  \let\horom@rvVirgo\Virgo
  \let\horom@rvLibra\Libra
  \let\horom@rvScorpio\Scorpio
  \let\horom@rvSagittarius\Sagittarius
  \let\horom@rvCapricorn\Capricorn
  \let\horom@rvAquarius\Aquarius
  \let\horom@rvPisces\Pisces
  \let\horom@rvSun\Sun
  \let\horom@rvMoon\Moon
  \let\horom@rvMercury\Mercury
  \let\horom@rvVenus\Venus
  \let\horom@rvMars\Mars
  \let\horom@rvJupiter\Jupiter
  \let\horom@rvSaturn\Saturn
  \let\horom@rvUranus\Uranus
  \let\horom@rvNeptune\Neptune
  \let\horom@rvPluto\Pluto
\fi
\ifhoro@starfont\RequirePackage{starfont}%
  \let\horost@rAries\Aries
  \let\horost@rTaurus\Taurus
  \let\horost@rGemini\Gemini
  \let\horost@rCancer\Cancer
  \let\horost@rLeo\Leo
  \let\horost@rVirgo\Virgo
  \let\horost@rLibra\Libra
  \let\horost@rScorpio\Scorpio
  \let\horost@rSagittarius\Sagittarius
  \let\horost@rCapricorn\Capricorn
  \let\horost@rAquarius\Aquarius
  \let\horost@rPisces\Pisces
  \let\horost@rSun\Sun
  \let\horost@rMoon\Moon
  \let\horost@rMercury\Mercury
  \let\horost@rVenus\Venus
  \let\horost@rMars\Mars
  \let\horost@rJupiter\Jupiter
  \let\horost@rSaturn\Saturn
  \let\horost@rUranus\Uranus
  \let\horost@rNeptune\Neptune
  \let\horost@rPluto\Pluto
  \let\horost@rSquare\Square
\fi
\ifhoro@wheels
  \RequirePackage{pict2e}
  \RequirePackage{trig}
\fi
\def\horodegrees{\ensuremath{^\circ}}
\def\horominutes{\ensuremath{'}}
\def\horoseconds{\ensuremath{''}}
\def\Zodiac#1{\ifcase#1
   \or\AriesSymbol\or\TaurusSymbol\or\GeminiSymbol
   \or\CancerSymbol\or\LeoSymbol\or\VirgoSymbol
   \or\LibraSymbol\or\ScorpioSymbol\or\SagittariusSymbol
   \or\CapricornSymbol\or\AquariusSymbol\or\PiscesSymbol\fi}
\def\MeanNodeSymbol{\NorthNodeSymbol$_M$}%
\def\TrueNodeSymbol{\NorthNodeSymbol$_T$}%
\newcommand{\horotextsym}{%
\gdef\AriesSymbol{Ar}%
\gdef\TaurusSymbol{Ta}%
\gdef\GeminiSymbol{Ge}%
\gdef\CancerSymbol{Cn}%
\gdef\LeoSymbol{Le}%
\gdef\VirgoSymbol{Vi}%
\gdef\LibraSymbol{Li}%
\gdef\ScorpioSymbol{Sc}%
\gdef\SagittariusSymbol{Sg}%
\gdef\CapricornSymbol{Cp}%
\gdef\AquariusSymbol{Aq}%
\gdef\PiscesSymbol{Pi}%
\gdef\SunSymbol{Su}%
\gdef\MoonSymbol{Mo}%
\gdef\MercurySymbol{Me}%
\gdef\VenusSymbol{Ve}%
\gdef\MarsSymbol{Ma}%
\gdef\JupiterSymbol{Ju}%
\gdef\SaturnSymbol{Sa}%
\gdef\UranusSymbol{Ur}%
\gdef\NeptuneSymbol{Ne}%
\gdef\PlutoSymbol{Pl}%
\gdef\ChironSymbol{Chi}%
\gdef\CeresSymbol{Cer}%
\gdef\PallasSymbol{Pal}%
\gdef\JunoSymbol{Jun}%
\gdef\VestaSymbol{Ves}%
\gdef\NorthNodeSymbol{No}%
\gdef\SouthNodeSymbol{SNo}%
\gdef\LilithSymbol{Lil}%
\gdef\CuspISymbol{ASC}%
\gdef\CuspIISymbol{$2^{nd}$}%
\gdef\CuspIIISymbol{$3^{rd}$}%
\gdef\CuspIVSymbol{IC}%
\gdef\CuspVSymbol{$5^{th}$}%
\gdef\CuspVISymbol{$6^{th}$}%
\gdef\CuspVIISymbol{DSC}%
\gdef\CuspVIIISymbol{$8^{th}$}%
\gdef\CuspIXSymbol{$9^{th}$}%
\gdef\CuspXSymbol{MC}%
\gdef\CuspXISymbol{$11^{th}$}%
\gdef\CuspXIISymbol{$12^{th}$}%
\gdef\AscendantSymbol{ASC}%
\gdef\MCSymbol{MC}%
\gdef\VertexSymbol{Vtx}%
\gdef\horoRetrogradeSymbol{Rx}%
\gdef\horoConjunctionSymbol{Con}%
\gdef\horoOppositionSymbol{Opp}%
\gdef\horoTrineSymbol{Tri}%
\gdef\horoSquareSymbol{Sqr}%
\gdef\horoQuintileSymbol{Qnt}%
\gdef\horoBiquintileSymbol{Bqi}%
\gdef\horoSextileSymbol{Sex}%
\gdef\horoQuincunxSymbol{Qcx}%
\gdef\horoSemisextileSymbol{Ssx}%
\gdef\horoSemisquareSymbol{Ssq}%
\gdef\horoSesquiquadrateSymbol{Sqq}%
}
\horotextsym
\ifhoro@unicode\newcommand{\horounicode@}{%
\gdef\AriesSymbol{^^^^2648}%
\gdef\TaurusSymbol{^^^^2649}%
\gdef\GeminiSymbol{^^^^264a}%
\gdef\CancerSymbol{^^^^264b}%
\gdef\LeoSymbol{^^^^264c}%
\gdef\VirgoSymbol{^^^^264d}%
\gdef\LibraSymbol{^^^^264e}%
\gdef\ScorpioSymbol{^^^^264f}%
\gdef\SagittariusSymbol{^^^^2650}%
\gdef\CapricornSymbol{^^^^2651}%
\gdef\AquariusSymbol{^^^^2652}%
\gdef\PiscesSymbol{^^^^2653}%
\gdef\SunSymbol{^^^^2609}%
\gdef\MoonSymbol{^^^^263d}%
\gdef\MercurySymbol{^^^^263f}%
\gdef\VenusSymbol{^^^^2640}%
\gdef\MarsSymbol{^^^^2642}%
\gdef\JupiterSymbol{^^^^2643}%
\gdef\SaturnSymbol{^^^^2644}%
\gdef\UranusSymbol{^^^^2645}%
\gdef\NeptuneSymbol{^^^^2646}%
\gdef\PlutoSymbol{^^^^2647}%
\gdef\ChironSymbol{^^^^26b7}%
\gdef\CeresSymbol{^^^^26b3}%
\gdef\PallasSymbol{^^^^26b4}%
\gdef\JunoSymbol{^^^^26b5}%
\gdef\VestaSymbol{^^^^26b6}%
\gdef\NorthNodeSymbol{^^^^260a}%
\gdef\SouthNodeSymbol{^^^^260b}%
\gdef\LilithSymbol{^^^^26b8}%
\gdef\horoRetrogradeSymbol{^^^^211e}%
\gdef\horoConjunctionSymbol{^^^^260c}%
\gdef\horoOppositionSymbol{^^^^260d}%
\gdef\horoTrineSymbol{^^^^25b3}%
\gdef\horoSquareSymbol{^^^^25a1}%
\gdef\horoSextileSymbol{^^^^26b9}%
\gdef\horoQuincunxSymbol{^^^^26bb}%
\gdef\horoSemisextileSymbol{^^^^26ba}%
\gdef\horoSemisquareSymbol{^^^^2220}%
\gdef\horoSesquiquadrateSymbol{^^^^26bc}%
}
\newcommand{\horounicode@point}[1]{\ensuremath{\langle\mbox{U+#1}\rangle}}
\newcommand{\horounicode}{%
\ifxetex\horounicode@\else
\ifluatex\horounicode@\else
\gdef\AriesSymbol{\horounicode@point{2648}}%
\gdef\TaurusSymbol{\horounicode@point{2649}}%
\gdef\GeminiSymbol{\horounicode@point{264A}}%
\gdef\CancerSymbol{\horounicode@point{264B}}%
\gdef\LeoSymbol{\horounicode@point{264C}}%
\gdef\VirgoSymbol{\horounicode@point{264D}}%
\gdef\LibraSymbol{\horounicode@point{264E}}%
\gdef\ScorpioSymbol{\horounicode@point{264F}}%
\gdef\SagittariusSymbol{\horounicode@point{2650}}%
\gdef\CapricornSymbol{\horounicode@point{2651}}%
\gdef\AquariusSymbol{\horounicode@point{2652}}%
\gdef\PiscesSymbol{\horounicode@point{2653}}%
\gdef\SunSymbol{\horounicode@point{2609}}%
\gdef\MoonSymbol{\horounicode@point{263D}}%
\gdef\MercurySymbol{\horounicode@point{263F}}%
\gdef\VenusSymbol{\horounicode@point{2640}}%
\gdef\MarsSymbol{\horounicode@point{2642}}%
\gdef\JupiterSymbol{\horounicode@point{2643}}%
\gdef\SaturnSymbol{\horounicode@point{2644}}%
\gdef\UranusSymbol{\horounicode@point{2645}}%
\gdef\NeptuneSymbol{\horounicode@point{2646}}%
\gdef\PlutoSymbol{\horounicode@point{2647}}%
\gdef\ChironSymbol{\horounicode@point{26B7}}%
\gdef\CeresSymbol{\horounicode@point{26B3}}%
\gdef\PallasSymbol{\horounicode@point{26B4}}%
\gdef\JunoSymbol{\horounicode@point{26B5}}%
\gdef\VestaSymbol{\horounicode@point{26B6}}%
\gdef\NorthNodeSymbol{\horounicode@point{260A}}%
\gdef\SouthNodeSymbol{\horounicode@point{260B}}%
\gdef\LilithSymbol{\horounicode@point{26B8}}%
\gdef\horoRetrogradeSymbol{\horounicode@point{211E}}%
\gdef\horoConjunctionSymbol{\horounicode@point{260C}}%
\gdef\horoOppositionSymbol{\horounicode@point{260D}}%
\gdef\horoTrineSymbol{\horounicode@point{25B3}}%
\gdef\horoSquareSymbol{\horounicode@point{25A1}}%
\gdef\horoSextileSymbol{\horounicode@point{26B9}}%
\gdef\horoQuincunxSymbol{\horounicode@point{26BB}}%
\gdef\horoSemisextileSymbol{\horounicode@point{26BA}}%
\gdef\horoSemisquareSymbol{\horounicode@point{2220}}%
\gdef\horoSesquiquadrateSymbol{\horounicode@point{26BC}}%
\fi\fi
}
\horounicode
\fi
\ifhoro@wasysym\newcommand{\horowasysym}{%
\gdef\AriesSymbol{\aries}%
\gdef\TaurusSymbol{\taurus}%
\gdef\GeminiSymbol{\gemini}%
\gdef\CancerSymbol{\cancer}%
\gdef\LeoSymbol{\leo}%
\gdef\VirgoSymbol{\virgo}%
\gdef\LibraSymbol{\libra}%
\gdef\ScorpioSymbol{\scorpio}%
\gdef\SagittariusSymbol{\sagittarius}%
\gdef\CapricornSymbol{\capricornus}%
\gdef\AquariusSymbol{\aquarius}%
\gdef\PiscesSymbol{\pisces}%
\gdef\SunSymbol{\astrosun}%
\gdef\MoonSymbol{\rightmoon}%
\gdef\MercurySymbol{\mercury}%
\gdef\VenusSymbol{\venus}%
\gdef\MarsSymbol{\mars}%
\gdef\JupiterSymbol{\jupiter}%
\gdef\SaturnSymbol{\saturn}%
\gdef\UranusSymbol{\uranus}%
\gdef\NeptuneSymbol{\neptune}%
\gdef\PlutoSymbol{\pluto}%
\gdef\horoConjunctionSymbol{\conjunction}%
\gdef\horoOppositionSymbol{\opposition}%
\gdef\horoTrineSymbol{\ensuremath{\bigtriangleup}}%
\gdef\horoSquareSymbol{\horow@sySquare}%
\gdef\horoSextileSymbol{\hexstar}%
}
\horowasysym
\fi
\ifhoro@marvosym\newcommand{\horomarvosym}{%
\gdef\AriesSymbol{\horom@rvAries}%
\gdef\TaurusSymbol{\horom@rvTaurus}%
\gdef\GeminiSymbol{\horom@rvGemini}%
\gdef\CancerSymbol{\horom@rvCancer}%
\gdef\LeoSymbol{\horom@rvLeo}%
\gdef\VirgoSymbol{\horom@rvVirgo}%
\gdef\LibraSymbol{\horom@rvLibra}%
\gdef\ScorpioSymbol{\horom@rvScorpio}%
\gdef\SagittariusSymbol{\horom@rvSagittarius}%
\gdef\CapricornSymbol{\horom@rvCapricorn}%
\gdef\AquariusSymbol{\horom@rvAquarius}%
\gdef\PiscesSymbol{\horom@rvPisces}%
\gdef\SunSymbol{\horom@rvSun}%
\gdef\MoonSymbol{\horom@rvMoon}%
\gdef\MercurySymbol{\horom@rvMercury}%
\gdef\VenusSymbol{\horom@rvVenus}%
\gdef\MarsSymbol{\horom@rvMars}%
\gdef\JupiterSymbol{\horom@rvJupiter}%
\gdef\SaturnSymbol{\horom@rvSaturn}%
\gdef\UranusSymbol{\horom@rvUranus}%
\gdef\NeptuneSymbol{\horom@rvNeptune}%
\gdef\PlutoSymbol{\horom@rvPluto}%
}
\horomarvosym
\fi
\ifhoro@starfont\newcommand{\horostarfont}{%
\gdef\AriesSymbol{\horost@rAries}%
\gdef\TaurusSymbol{\horost@rTaurus}%
\gdef\GeminiSymbol{\horost@rGemini}%
\gdef\CancerSymbol{\horost@rCancer}%
\gdef\LeoSymbol{\horost@rLeo}%
\gdef\VirgoSymbol{\horost@rVirgo}%
\gdef\LibraSymbol{\horost@rLibra}%
\gdef\ScorpioSymbol{\horost@rScorpio}%
\gdef\SagittariusSymbol{\horost@rSagittarius}%
\gdef\CapricornSymbol{\horost@rCapricorn}%
\gdef\AquariusSymbol{\horost@rAquarius}%
\gdef\PiscesSymbol{\horost@rPisces}%
\gdef\SunSymbol{\horost@rSun}%
\gdef\MoonSymbol{\horost@rMoon}%
\gdef\MercurySymbol{\horost@rMercury}%
\gdef\VenusSymbol{\horost@rVenus}%
\gdef\MarsSymbol{\horost@rMars}%
\gdef\JupiterSymbol{\horost@rJupiter}%
\gdef\SaturnSymbol{\horost@rSaturn}%
\gdef\UranusSymbol{\horost@rUranus}%
\gdef\NeptuneSymbol{\horost@rNeptune}%
\gdef\PlutoSymbol{\horost@rPluto}%
\gdef\ChironSymbol{\Chiron}%
\gdef\CeresSymbol{\Ceres}%
\gdef\PallasSymbol{\Pallas}%
\gdef\JunoSymbol{\Juno}%
\gdef\VestaSymbol{\Vesta}%
\gdef\NorthNodeSymbol{\NorthNode}%
\gdef\SouthNodeSymbol{\SouthNode}%
\gdef\MeanNodeSymbol{\NorthNode$_M$}%
\gdef\TrueNodeSymbol{\NorthNode$_T$}%
\gdef\LilithSymbol{\Lilith}%
\gdef\CuspISymbol{\ASC}%
\gdef\CuspIVSymbol{\IC}%
\gdef\CuspVIISymbol{\DSC}%
\gdef\CuspXSymbol{\MC}%
\gdef\AscendantSymbol{\ASC}%
\gdef\MCSymbol{\MC}%
\gdef\VertexSymbol{\Vertex}%
\gdef\horoRetrogradeSymbol{\Retrograde}%
\gdef\horoConjunctionSymbol{\Conjunction}%
\gdef\horoOppositionSymbol{\Opposition}%
\gdef\horoTrineSymbol{\Trine}%
\gdef\horoSquareSymbol{\horost@rSquare}%
\gdef\horoQuintileSymbol{$\mathsf{Q}$}%
\gdef\horoBiquintileSymbol{$\mathsf{Q}^2$}%
\gdef\horoSextileSymbol{\Sextile}%
\gdef\horoQuincunxSymbol{\Quincunx}%
\gdef\horoSemisextileSymbol{\Semisextile}%
\gdef\horoSemisquareSymbol{\Semisquare}%
\gdef\horoSesquiquadrateSymbol{\Sesquiquadrate}%
}
\horostarfont
\fi
%% WATCH OUT!  MAKING Q EXOTIC HERE!
\catcode`\Q=3
\def\horo@cue{Q}
\def\trimspaces#1{%
  \begingroup
    \aftergroup\toks\aftergroup0\aftergroup{%
    \expandafter\@trimb\expandafter\noexpand#1Q Q}%
    \edef#1{\the\toks0}%
}
\long\def\@trimb#1 Q{\@trimc#1Q}
\long\def\@trimc#1Q#2{\afterassignment\endgroup \vfuzz\the\vfuzz#1}
\def\horo@fterdef#1{%
  \aftergroup\horo@ft@a
  \aftergroup#1\expandafter\aftergroup\csname horo@@#1\endcsname
}
\def\horo@eathead#1#2#3#4#5#6#7{}
\def\horo@ft@a#1#2{%
  \edef#1{\expandafter\horo@eathead\string#2}%
}
\def\horo@polarconvert#1#2#3#4{%
  \dimen@=\nin@ty\p@\advance\dimen@-#2\p@\TG@@sin
  #3=#1\dimen@
  \dimen@=#2\p@\TG@@sin
  #4=#1\dimen@
}
\def\horo@fe#1,{%
  \def\horo@fe@c{#1}%
  \ifx\horo@fe@c\horo@cue\relax
  \else
    \horo@fe@b{#1}%
    \expandafter\horo@fe
  \fi
}
\def\horoforeach#1#2{%
  \edef\horo@fe@a{#1}%
  \def\horo@fe@b{#2}%
  \expandafter\horo@fe\horo@fe@a,Q,%
}
\def\horo@dfe@b#1,{%
  \def\horo@dfe@y{#1}%
  \ifx\horo@dfe@y\horo@cue\relax
  \else
    \horo@dfe@ction{\horo@dfe@x}{\horo@dfe@y}%
    \expandafter\horo@dfe@b
  \fi
}
\def\horo@dfe@a#1,{%
  \def\horo@dfe@x{#1}%
  \ifx\horo@dfe@x\horo@cue\relax
  \else
    \expandafter\horo@dfe@b\horo@dfe@ylist,Q,\relax
    \expandafter\horo@dfe@a
  \fi
}
\def\horo@dblforeach#1#2#3{%
  \edef\horo@dfe@xlist{#1}\edef\horo@dfe@ylist{#2}\def\horo@dfe@ction{#3}%
  \expandafter\horo@dfe@a\horo@dfe@xlist,Q,\relax
}
\newif\ifhorocalculated\horocalculatedfalse
\def\hororightcoord{\ifhorocalculated\horoCuspVIIPos\else180\fi}%
\def\horocusps{CuspI,CuspII,CuspIII,CuspIV,CuspV,CuspVI,%
               CuspVII,CuspVIII,CuspIX,CuspX,CuspXI,CuspXII}%
\def\horoangularcusps{CuspI,CuspIV,CuspVII,CuspX}
\def\horocalcharmonic#1{%
  \horoforeach{\horoobjects}{\horo@calch{#1}}%
}
\def\horo@calch#1#2{%
  \dimen@=\csname horo#2Pos\endcsname\p@\relax
  \multiply\dimen@ by #1\relax
  \horo@fixdimen@
  \expandafter\edef\csname horo#2Pos\endcsname{\TG@rem@pt\dimen@}%
  \expandafter\edef\csname horo#2DPos\endcsname{\TG@rem@pt\dimen@}%
}
\def\horoshiftobjects#1{%
  \horoforeach{\horoobjects}{\horo@shift{#1}}%
}
\def\horoshiftcusps#1{%
  \horoforeach{\horocusps}{\horo@shift{#1}}%
}
\def\horo@shift#1#2{%
  \dimen@=\csname horo#2Pos\endcsname\p@\relax
  \advance\dimen@ by #1\p@\relax
  \horo@fixdimen@
  \expandafter\edef\csname horo#2Pos\endcsname{\TG@rem@pt\dimen@}%
  \expandafter\edef\csname horo#2DPos\endcsname{\TG@rem@pt\dimen@}%
}
\def\horomakeequalcusps#1{
   \def\horoCuspIPos{0}%
   \def\horoCuspIIPos{30}%
   \def\horoCuspIIIPos{60}%
   \def\horoCuspIVPos{90}%
   \def\horoCuspVPos{120}%
   \def\horoCuspVIPos{150}%
   \def\horoCuspVIIPos{180}%
   \def\horoCuspVIIIPos{210}%
   \def\horoCuspIXPos{240}%
   \def\horoCuspXPos{270}%
   \def\horoCuspXIPos{300}%
   \def\horoCuspXIIPos{330}%
   \horoshiftcusps{#1}%
}
\def\horomakesigncusps#1{
  \dimen@=#1\p@\relax
  \edef\horo@savecount@{\the\count0}%
  \count0=\dimen@\relax
  \divide\count0 by 1966080\relax
  \multiply\count0 by 30\relax
  \expandafter\horomakeequalcusps{\the\count0}%
  \count0=\horo@savecount@\relax
}
\def\horo@midpoint#1#2{%
  \dimen@#1\p@\relax
  \advance\dimen@ by-#2\p@\relax
  \horo@fixdimen@diff
  \divide\dimen@ by2\relax
  \advance\dimen@ by#2\p@\relax
  \horo@fixdimen@
}
\def\horo@chartrotate{%
  \advance\dimen@-\hororightcoord\p@
  \horo@fixdimen@
}
\def\horo@fixdimen@{%
  \edef\horo@savecount@{\the\count0}%
  \count0=\dimen@\relax
  \ifnum\count0<0\relax
    \divide\count0 by 23592960\relax
    \advance\count0 by -1\relax
  \else
    \divide\count0 by 23592960\relax
  \fi
  \multiply\count0 by -360\relax
  \advance\dimen@ by\count0\p@\relax
  \count0=\horo@savecount@\relax
}
\def\horo@fixdimen@diff{%
  \horo@fixdimen@
  \ifdim\dimen@>180\p@\advance\dimen@ by -360\p@\fi
}
\def\hororotatechart#1#2{%
  \begingroup
    \dimen@=#2\p@\relax
    \advance\dimen@ by-\csname horo#1DPos\endcsname\p@\relax
    \multiply\dimen@ by -1\relax
    \edef\hororightcoord{\TG@rem@pt\dimen@}%
    \horo@fterdef\hororightcoord
  \endgroup
}
\def\horocopyvar#1#2#3{%
  \horoforeach{#1}{\horo@cv@{#2}{#3}}%
}
\def\horo@cv@#1#2#3{%
  \expandafter\edef\csname horo#3#2\endcsname{\csname horo#3#1\endcsname}%
}
\def\horosaveobjects#1{%
  \begingroup
    \aftergroup\def\aftergroup#1\aftergroup{%
    \horo@fterdef\horoobjects
    \horoforeach{\horoobjects}{\horo@svo@a}%
    \aftergroup\horo@svo@b
    \aftergroup}%
  \endgroup
}
\def\horo@svo@a#1{%
  \expandafter\horo@fterdef\csname horo#1Pos\endcsname
  \expandafter\horo@fterdef\csname horo#1Vel\endcsname
}
\def\horo@svo@b{%
  \horocopyvar{\horoobjects}{Pos}{DPos}%
}
\def\horosavecusps#1{%
  \begingroup
    \aftergroup\def\aftergroup#1\aftergroup{%
    \edef\hororightcoord{\hororightcoord}%
    \horo@fterdef\horocusps\horo@fterdef\hororightcoord
    \horoforeach{\horocusps}{\horo@svc@a}%
    \aftergroup\horo@svc@b
    \aftergroup}%
  \endgroup
}
\def\horo@svc@a#1{%
  \expandafter\horo@fterdef\csname horo#1Pos\endcsname
}
\def\horo@svc@b{%
  \horocopyvar{\horocusps}{Pos}{DPos}%
}
\def\horo@twodig#1{\ifnum#1<10\relax\edef#1{0#1}\fi}
\def\horo@ddms#1#2:#3:#4Q#5{%
  \def\horo@data{}%
  \uppercase{\if#1S\def\horo@data{-}\fi\if#1W\def\horo@data{-}\fi}%
  \dimen@=#4\p@
  \divide\dimen@ by 60\relax
  \advance\dimen@ by #3\p@
  \divide\dimen@ by 60\relax
  \advance\dimen@ by #2\p@
  \edef#5{\horo@data\TG@rem@pt\dimen@}%
  \trimspaces{#5}%
}
\def\horo@r@offset{1sp}%
\def\horo@r@offdig{Z}%
\newif\ifhororoundclamp\hororoundclampfalse
\def\hororoundstricttruncate{\def\horo@r@offdigit{X}}
\def\hororoundtruncate{\def\horo@r@offset{1sp}\def\horo@r@offdigit{Z}}
\def\hororoundtosec{\def\horo@r@offset{9sp}\def\horo@r@offdigit{Z}}
\def\hororoundtomin{\def\horo@r@offset{546sp}\def\horo@r@offdigit{Z}}
\def\hororoundtodeg{\def\horo@r@offset{0.5pt}\def\horo@r@offdigit{Z}}
\def\hororoundtoseckeepsign{\def\horo@r@offset{9sp}\def\horo@r@offdigit{D}}
\def\hororoundtoseckeepdeg{\def\horo@r@offset{546sp}\def\horo@r@offdigit{M}}
\def\hororoundtoseckeepmin{\def\horo@r@offset{0.5pt}\def\horo@r@offdigit{S}}
\def\hororoundtominkeepsign{\def\horo@r@offset{546sp}\def\horo@r@offdigit{D}}
\def\hororoundtominkeepdeg{\def\horo@r@offset{0.5pt}\def\horo@r@offdigit{M}}
\def\hororoundtodegkeepsign{\def\horo@r@offset{0.5pt}\def\horo@r@offdigit{D}}
\newif\ifhororoundauto\hororoundautotrue
\def\horo@d@dms@@#1#2{%
  \count0=\dimen@\relax
  \divide\count0by65536\relax
  \ifhororoundclamp\ifnum\count0>#2 \count0=#2\relax\fi\fi
  \edef#1{\the\count0}%
  \horo@fterdef#1%
  \advance\dimen@-\count0\p@
  \multiply\dimen@ 60\relax
}
\def\horo@d@dms@{%
  \advance\dimen@1sp\relax
  \horo@d@dms@@\horo@d@deg{100000}%
  \horo@d@dms@@\horo@d@min{100000}%
  \horo@d@dms@@\horo@d@sec{100000}%
}
\def\horo@d@sdms{%
  \begingroup
    \def\horo@tmp{Z}\ifx\horo@r@offdigit\horo@tmp
       \advance\dimen@\horo@r@offset\relax
    \fi
    \count0=\dimen@\relax
    \divide\count0by1966080\relax
    \count1=\count0\relax
    \advance\count1by1\relax
    \edef\horo@d@sign{\the\count1}%
    \horo@fterdef\horo@d@sign
    \multiply\count0by30\relax%
    \advance\dimen@-\count0\p@
    \def\horo@tmp{D}\ifx\horo@r@offdigit\horo@tmp
       \advance\dimen@\horo@r@offset\relax
    \fi
    \horo@d@dms@@\horo@d@deg{29}%
    \def\horo@tmp{M}\ifx\horo@r@offdigit\horo@tmp
       \advance\dimen@\horo@r@offset\relax
    \fi
    \horo@d@dms@@\horo@d@min{59}%
    \def\horo@tmp{S}\ifx\horo@r@offdigit\horo@tmp
       \advance\dimen@\horo@r@offset\relax
    \fi
    \horo@d@dms@@\horo@d@sec{59}%
  \endgroup
}
\def\horo@d@dms{%
  \begingroup
    \def\horo@tmp{Z}\ifx\horo@r@offdigit\horo@tmp
       \advance\dimen@ \horo@r@offset\relax
    \fi
    \def\horo@tmp{D}\ifx\horo@r@offdigit\horo@tmp
       \advance\dimen@ \horo@r@offset\relax
    \fi
    \horo@d@dms@@\horo@d@deg{100000}%
    \def\horo@tmp{M}\ifx\horo@r@offdigit\horo@tmp
       \advance\dimen@ \horo@r@offset\relax
    \fi
    \horo@d@dms@@\horo@d@min{59}%
    \def\horo@tmp{S}\ifx\horo@r@offdigit\horo@tmp
       \advance\dimen@ \horo@r@offset\relax
    \fi
    \horo@d@dms@@\horo@d@sec{59}%
  \endgroup
}
\def\horodsmstext#1{%
   \begingroup
      \ifhororoundauto\hororoundtoseckeepmin\fi
      \dimen@=#1\p@
      \horo@d@sdms
      \horo@d@deg\horodegrees\Zodiac{\horo@d@sign}%
      \horo@d@min\horominutes\horo@d@sec\horoseconds
   \endgroup
}
\def\horotimetext#1{%
   \begingroup
      \ifhororoundauto\hororoundtruncate\fi
      \dimen@=#1\p@
      \horo@d@sdms
      \horo@twodig\horo@d@min\horo@twodig\horo@d@sec
      \horo@d@deg:\horo@d@min:\horo@d@sec
   \endgroup
}
\def\horo@nsew#1#2{%
   \ifdim\dimen@<\z@\relax
     \def\horo@calc@b{#2}\multiply\dimen@ by-1\relax
   \else
     \def\horo@calc@b{#1}%
   \fi
}
\def\horolatlontext#1#2#3{%
  \begingroup
    \ifhororoundauto\hororoundtruncate\fi
    \dimen@=#1\p@\horo@nsew{#2}{#3}%
      \horo@d@dms
      \horo@d@deg\horodegrees%
      \horo@d@min\horominutes\horo@d@sec\horoseconds~\horo@calc@b
  \endgroup
}
\def\hororxtext#1{%
  \begingroup
    \dimen@\csname horo#1Vel\endcsname\p@
    \ifdim\dimen@<\z@\relax
      \horoRetrogradeSymbol
    \fi
  \endgroup
}
\def\horocalcparms#1#2#3#4#5#6{%
  \edef\horocalcyear{#1}\edef\horocalcmonth{#2}\edef\horocalcday{#3}%
  \horo@ddms N#4Q\horocalctime
  \horo@ddms#5Q\horocalclon
  \horo@ddms#6Q\horocalclat
}
\ifhoro@strolog
  \def\horoSun@strologname{Sun }\def\horo@stSunObj{Sun}
  \def\horoMoon@strologname{Moo }\def\horo@stMooObj{Moon}
  \def\horoMercury@strologname{Mer }\def\horo@stMerObj{Mercury}
  \def\horoVenus@strologname{Ven }\def\horo@stVenObj{Venus}
  \def\horoMars@strologname{Mar }\def\horo@stMarObj{Mars}
  \def\horoJupiter@strologname{Jup }\def\horo@stJupObj{Jupiter}
  \def\horoSaturn@strologname{Sat }\def\horo@stSatObj{Saturn}
  \def\horoUranus@strologname{Ura }\def\horo@stUraObj{Uranus}
  \def\horoNeptune@strologname{Nep }\def\horo@stNepObj{Neptune}
  \def\horoPluto@strologname{Plu }\def\horo@stPluObj{Pluto}
  \def\horoChiron@strologname{Chi }\def\horo@stChiObj{Chiron}
  \def\horoCeres@strologname{Cer }\def\horo@stCerObj{Ceres}
  \def\horoPallas@strologname{Pal }\def\horo@stPalObj{Pallas}
  \def\horoJuno@strologname{Jun }\def\horo@stJunObj{Juno}
  \def\horoVesta@strologname{Ves }\def\horo@stVesObj{Vesta}
  \def\horoNorthNode@strologname{Nod }\def\horo@stNodObj{NorthNode}
  \def\horoSouthNode@strologname{S.N }
    \expandafter\def\csname horo@stS.NObj\endcsname{SouthNode}
  \def\horoLilith@strologname{Lil }\def\horo@stLilObj{Lilith}
  \def\horo@stAscObj{CuspI}
  \expandafter\def\csname horo@st2ndObj\endcsname{CuspII}
  \expandafter\def\csname horo@st3rdObj\endcsname{CuspIII}
  \def\horo@stNadObj{CuspIV}
  \expandafter\def\csname horo@st5thObj\endcsname{CuspV}
  \expandafter\def\csname horo@st6thObj\endcsname{CuspVI}
  \def\horo@stDesObj{CuspVII}
  \expandafter\def\csname horo@st8thObj\endcsname{CuspVIII}
  \expandafter\def\csname horo@st9thObj\endcsname{CuspIX}
  \def\horo@stMidObj{CuspX}
  \expandafter\def\csname horo@st11tObj\endcsname{CuspXI}
  \expandafter\def\csname horo@st12tObj\endcsname{CuspXII}
  \def\horo@stAriSign{0}
  \def\horo@stTauSign{30}
  \def\horo@stGemSign{60}
  \def\horo@stCanSign{90}
  \def\horo@stLeoSign{120}
  \def\horo@stVirSign{150}
  \def\horo@stLibSign{180}
  \def\horo@stScoSign{210}
  \def\horo@stSagSign{240}
  \def\horo@stCapSign{270}
  \def\horo@stAquSign{300}
  \def\horo@stPisSign{330}
  \def\horoPlacidusHouses{\def\horo@housenumber{0}}
  \def\horoKochHouses{\def\horo@housenumber{1}}
  \def\horoEqualHouses{\def\horo@housenumber{2}}
  \def\horoCampanusHouses{\def\horo@housenumber{3}}
  \def\horoMeridianHouses{\def\horo@housenumber{4}}
  \def\horoRegiomontanusHouses{\def\horo@housenumber{5}}
  \def\horoPorphyryHouses{\def\horo@housenumber{6}}
  \def\horoMorinusHouses{\def\horo@housenumber{7}}
  \def\horoPolichPageHouses{\def\horo@housenumber{8}}
  \def\horoAlcabitusHouses{\def\horo@housenumber{9}}
  \def\horoEqualMCHouses{\def\horo@housenumber{10}}
  \def\horoNeoPorphyryHouses{\def\horo@housenumber{11}}
  \def\horoWholeHouses{\def\horo@housenumber{12}}
  \def\horoVedicHouses{\def\horo@housenumber{13}}
  \newread\horo@tmpfile
  \edef\horo@tmpfname{\jobname.hor}%
  \def\horoastrologopt{}
  \def\horoobjects{Sun,Moon,Mercury,Venus,Mars,Jupiter,Saturn,%
                   Uranus,Neptune,Pluto,NorthNode,Lilith,%
                   Chiron,Ceres,Pallas,Juno,Vesta}
  \horoPlacidusHouses
  \def\horocalculate{%
    \begingroup
      \begingroup
        \aftergroup\def\aftergroup\horo@calc@a\aftergroup{%
        \horoforeach{\horoobjects}{\horo@calc@c}%
        \aftergroup}%
      \endgroup
      \dimen@\horocalctime\p@\horo@d@dms@\horo@twodig\horo@d@min
      \edef\horo@calc@d{\horo@d@deg:\horo@d@min\space GMT\space}%
      \dimen@=\horocalclon\p@\horo@nsew EW%
      \horo@d@dms@
      \horo@twodig\horo@d@min
      \edef\horo@calc@e{\horo@d@deg:\horo@d@min\horo@calc@b\space}%
      \dimen@=\horocalclat\p@\horo@nsew NS%
      \horo@d@dms@
      \horo@twodig\horo@d@min
      \edef\horo@calc@f{\horo@d@deg:\horo@d@min\horo@calc@b\space}%
      \immediate\write18{%
        astrolog\space
          -o0 \horo@tmpfname\space
          -c \horo@housenumber\space
          -qa \horocalcmonth\space
              \horocalcday\space
              \horocalcyear\space
              \horo@calc@d\horo@calc@e\horo@calc@f
          -R0 \horo@calc@a
          \horoastrologopt
      }%
      \openin\horo@tmpfile=\horo@tmpfname\relax
      \aftergroup\horocalculatedfalse
      \horo@calc@parse
      \closein\horo@tmpfile
    \endgroup
  }
  \def\horo@calc@c#1{%
    \expandafter\aftergroup\csname horo#1@strologname\endcsname
  }
  \def\horo@calc@parse{%
    \read\horo@tmpfile to \horo@calc@parse@a
    \ifeof\horo@tmpfile\else
      \expandafter\horo@calc@parse@b\horo@calc@parse@a\space x\space Q%
      \horo@calc@parse
    \fi
  }
  \def\horo@YF{-YF}
  \def\horo@calc@parse@b#1 #2Q{%
    \def\horo@calc@parse@b@{#1}%
    \ifx\horo@calc@parse@b@\horo@YF\horo@calc@parse@c#2Q\fi
  }
  \def\horo@calc@parse@c#1: #2 #3 #4, #5 #6, #7 #8Q{%
    \dimen@=#4\p@
    \divide\dimen@ by 60\relax
    \advance\dimen@ by #2\p@
    \advance\dimen@ by \csname horo@st#3Sign\endcsname\p@
    \expandafter\edef\csname
      horo\csname horo@st#1Obj\endcsname Pos\endcsname{%
      \TG@rem@pt\dimen@}%
    \expandafter\horo@fterdef\csname
      horo\csname horo@st#1Obj\endcsname Pos\endcsname
    \expandafter\edef\csname
      horo\csname horo@st#1Obj\endcsname DPos\endcsname{%
      \TG@rem@pt\dimen@}%
    \expandafter\horo@fterdef\csname
      horo\csname horo@st#1Obj\endcsname DPos\endcsname
    \expandafter\def\csname
      horo\csname horo@st#1Obj\endcsname Vel\endcsname{#7}%
    \expandafter\horo@fterdef\csname
      horo\csname horo@st#1Obj\endcsname Vel\endcsname
    \aftergroup\horocalculatedtrue
  }
\fi
\newif\ifhoro@ppendtmp\horo@ppendtmpfalse
\ifhoro@swetest
  \def\horoSunSEOpt{-p0}
  \def\horoMoonSEOpt{-p1}
  \def\horoMercurySEOpt{-p2}
  \def\horoVenusSEOpt{-p3}
  \def\horoMarsSEOpt{-p4}
  \def\horoJupiterSEOpt{-p5}
  \def\horoSaturnSEOpt{-p6}
  \def\horoUranusSEOpt{-p7}
  \def\horoNeptuneSEOpt{-p8}
  \def\horoPlutoSEOpt{-p9}
  \def\horoChironSEOpt{-pD}
  \def\horoPholusSEOpt{-pE}
  \def\horoCeresSEOpt{-pF}
  \def\horoPallasSEOpt{-pG}
  \def\horoJunoSEOpt{-pH}
  \def\horoVestaSEOpt{-pI}
  \def\horoMeanNodeSEOpt{-pm}
  \def\horoTrueNodeSEOpt{-pt}
  \def\horoLilithSEOpt{-pA}
  \def\horoAscendantSEOpt{-p0}
  \def\horoMCSEOpt{-p0}
  \def\horoARMCSEOpt{-p0}
  \def\horoVertexSEOpt{-p0}
  \def\horosweopt{}%
  \def\horoAlcabitusHouses{\def\horo@houseletter{b}}
  \def\horoAxialHouses{\def\horo@houseletter{x}}
  \def\horoAzimuthalHouses{\def\horo@houseletter{h}}
  \def\horoCampanusHouses{\def\horo@houseletter{c}}
  \def\horoEqualHouses{\def\horo@houseletter{a}}
  \def\horoKochHouses{\def\horo@houseletter{k}}
  \def\horoKrusinskiHouses{\def\horo@houseletter{U}}
  \def\horoMorinusHouses{\def\horo@houseletter{m}}
  \def\horoPlacidusHouses{\def\horo@houseletter{p}}
  \def\horoPolichPageHouses{\def\horo@houseletter{t}}
  \def\horoPorphyryHouses{\def\horo@houseletter{o}}
  \def\horoRegiomontanusHouses{\def\horo@houseletter{r}}
  \def\horoVehlowHouses{\def\horo@houseletter{v}}
  \newread\horo@tmpfile
  \edef\horo@tmpfname{\jobname.hor}
  \def\horo@readdata{%
    \ifeof\horo@tmpfile
      \def\horo@data{0.0}%
      \horocalculatedfalse
    \else
      \begingroup
        \let\do\@makeother\dospecials
        \read\horo@tmpfile to \horo@data
        \trimspaces\horo@data
        \horo@fterdef\horo@data
      \endgroup
    \fi
  }
  \def\horo@readpos#1{%
    \horo@readdata
    \expandafter\let\csname horo#1Pos\endcsname\horo@data
    \expandafter\let\csname horo#1DPos\endcsname\horo@data
  }
  \def\horo@readposvel#1{%
    \horo@readpos{#1}%
    \horo@readdata
    \expandafter\let\csname horo#1Vel\endcsname\horo@data
  }
  \def\horoobjects{Sun,Moon,Mercury,Venus,Mars,Jupiter,Saturn,%
                   Uranus,Neptune,Pluto,MeanNode,Lilith,%
                   Chiron,Ceres,Pallas,Juno,Vesta}
  \horoPlacidusHouses
  \def\horo@calcobj@#1#2{%
    \begingroup
      \dimen@\horocalctime\p@\horo@d@dms@
      \horo@twodig\horo@d@min\horo@twodig\horo@d@sec
      \immediate\write18{%
        swetest -f#2 -head\space
                -b\horocalcday.\horocalcmonth.\horocalcyear\space
                -ut\horo@d@deg:\horo@d@min:\horo@d@sec\space
                \csname horo#1SEOpt\endcsname\space
                \horosweopt\space
        \ifhoro@egrep| egrep '^[ 0-9.-]+'\space\fi
                >\ifhoro@ppendtmp >\fi\space
                \horo@tmpfname
      }%
    \endgroup
    \horo@ppendtmptrue
  }
  \def\horo@calcobj#1{%
    \horo@calcobj@{#1}{l}%
    \horo@calcobj@{#1}{s}%
  }
  \def\horocalculate{%
    \edef\horoCuspsSEOpt{-house\horocalclon,\horocalclat,%
                         \horo@houseletter\space-p}%
    \horo@ppendtmpfalse
    \horocalculatedtrue
    \horoforeach{\horoobjects}{\horo@calcobj}%
    \horo@calcobj@{Cusps}{l}%
    \openin\horo@tmpfile=\horo@tmpfname\relax
    \horoforeach{\horoobjects}{\horo@readposvel}%
    \horoforeach{\horocusps,Ascendant,MC,ARMC,Vertex}{\horo@readpos}%
    \closein\horo@tmpfile\relax
  }
\fi
\newif\ifhorodrawcusps\horodrawcuspstrue
\newif\ifhoroboldangles\horoboldanglestrue
\newif\ifhoroanglearrows\horoanglearrowstrue
\ifhoro@wheels
\newlength{\horounitlength}
\setlength{\horounitlength}{0.00952\textwidth}
\newlength{\horoanglecuspwidth}
\setlength{\horoanglecuspwidth}{1.44pt}
\newenvironment{horoscope}{%
  \setlength{\unitlength}{\horounitlength}%
  \begin{picture}(100,100)(-50,-50)%
}{%
  \end{picture}%
}
\newcommand{\horoCnote}[1]{%
  \put(0,0){\makebox(0,0){\parbox{75\unitlength}{\centering #1}}}%
}
\newcommand{\horoULnote}[1]{%
  \put(-50,50){\makebox(40,0)[t]{\parbox[t]{40\unitlength}{\raggedright #1}}}%
}
\newcommand{\horoURnote}[1]{%
  \put(10,50){\makebox(40,0)[t]{\parbox[t]{40\unitlength}{\raggedleft #1}}}%
}
\newcommand{\horoLLnote}[1]{%
  \put(-50,-50){\makebox(40,0)[b]{\parbox[t]{40\unitlength}{\raggedright #1}}}%
}
\newcommand{\horoLRnote}[1]{%
  \put(10,-50){\makebox(40,0)[b]{\parbox[t]{40\unitlength}{\raggedleft #1}}}%
}
\dimendef\horo@dim@x=1\relax
\dimendef\horo@dim@y=2\relax
\dimendef\horo@dim@xa=3\relax
\dimendef\horo@dim@ya=4\relax
\dimendef\horo@dim@xb=5\relax
\dimendef\horo@dim@yb=6\relax
\dimendef\horo@dim@xc=7\relax
\dimendef\horo@dim@yc=8\relax
\def\horo@putpolar#1#2#3{%
  \begingroup
    \edef\p@one{#1}\edef\p@two{#2}%
    \horo@polarconvert\p@one\p@two\horo@dim@x\horo@dim@y
    \put(\TG@rem@pt\horo@dim@x,\TG@rem@pt\horo@dim@y){\makebox(0,0){#3}}%
  \endgroup
}
\def\horoputradial#1#2#3{%
  \begingroup
    \edef\p@one{#1}\edef\p@two{#2}\edef\p@three{#3}%
    \horo@polarconvert\p@one\p@three\horo@dim@xa\horo@dim@ya
    \horo@polarconvert\p@two\p@three\horo@dim@xb\horo@dim@yb
    \advance\horo@dim@xb by\horo@dim@xa
    \advance\horo@dim@yb by\horo@dim@ya
    \Line(\TG@rem@pt\horo@dim@xa,\TG@rem@pt\horo@dim@ya)%
         (\TG@rem@pt\horo@dim@xb,\TG@rem@pt\horo@dim@yb)%
  \endgroup
}
\def\horoputline#1#2#3#4{%
  \begingroup
    \edef\p@one{#1}\edef\p@two{#2}\edef\p@three{#3}\edef\p@four{#4}%
    \horo@polarconvert\p@one\p@two\horo@dim@xa\horo@dim@ya
    \horo@polarconvert\p@three\p@four\horo@dim@xb\horo@dim@yb
    \Line(\TG@rem@pt\horo@dim@xa,\TG@rem@pt\horo@dim@ya)%
         (\TG@rem@pt\horo@dim@xb,\TG@rem@pt\horo@dim@yb)%
  \endgroup
}
\def\horoputarrowhead#1#2#3{%
  \begingroup
    \edef\horo@pa@r{#1}\edef\horo@pa@th{#2}%
    \edef\horo@pa@sc@le{#3}%
    \horo@polarconvert\horo@pa@r\horo@pa@th\horo@dim@x\horo@dim@y
    \horo@polarconvert\horo@pa@sc@le\horo@pa@th\horo@dim@xa\horo@dim@ya
    \horo@dim@xb=\horo@dim@x\relax\horo@dim@yb=\horo@dim@y\relax
    \advance\horo@dim@xb by-3\horo@dim@xa\relax
    \advance\horo@dim@yb by-3\horo@dim@ya\relax
    \advance\horo@dim@xb by-\horo@dim@ya\relax
    \advance\horo@dim@yb by\horo@dim@xa\relax
    \horo@dim@xc=\horo@dim@x\relax\horo@dim@yc=\horo@dim@y\relax
    \advance\horo@dim@xc by-3\horo@dim@xa\relax
    \advance\horo@dim@yc by-3\horo@dim@ya\relax
    \advance\horo@dim@xc by\horo@dim@ya\relax
    \advance\horo@dim@yc by-\horo@dim@xa\relax
    \multiply\horo@dim@xa by-2\relax\multiply\horo@dim@ya by-2\relax
    \advance\horo@dim@xa by\horo@dim@x\relax
    \advance\horo@dim@ya by\horo@dim@y\relax
    \polygon*%
      (\TG@rem@pt\horo@dim@x,\TG@rem@pt\horo@dim@y)%
      (\TG@rem@pt\horo@dim@xb,\TG@rem@pt\horo@dim@yb)%
      (\TG@rem@pt\horo@dim@xa,\TG@rem@pt\horo@dim@ya)%
      (\TG@rem@pt\horo@dim@xc,\TG@rem@pt\horo@dim@yc)%
      (\TG@rem@pt\horo@dim@x,\TG@rem@pt\horo@dim@y)%
  \endgroup
}

\def\horoputcurve#1#2#3#4{%
  \begingroup
    \edef\horo@pc@r@ne{#1}\edef\horo@pc@th@ne{#2}%
    \edef\horo@pc@rtw@{#3}\edef\horo@pc@thtw@{#4}%
    \dimen@=\horo@pc@th@ne\p@\relax\horo@chartrotate
    \edef\horo@pc@th@ne{\TG@rem@pt\dimen@}%
    \dimen@=\horo@pc@thtw@\p@\relax\horo@chartrotate
    \edef\horo@pc@thtw@{\TG@rem@pt\dimen@}%
    \horo@polarconvert\horo@pc@r@ne\horo@pc@th@ne\horo@dim@xa\horo@dim@ya
    \horo@polarconvert\horo@pc@rtw@\horo@pc@thtw@\horo@dim@xb\horo@dim@yb
    \dimen@=\horo@pc@r@ne\p@\relax
    \advance\dimen@ by\horo@pc@rtw@\p@\relax
    \divide\dimen@ by2\relax
    \edef\horo@pc@rmid{\TG@rem@pt\dimen@}%
    \horo@midpoint\horo@pc@th@ne\horo@pc@thtw@
    \edef\horo@pc@thmid{\TG@rem@pt\dimen@}%
    \horo@polarconvert\horo@pc@rmid\horo@pc@thmid\horo@dim@x\horo@dim@y
    \multiply\horo@dim@x by -4\relax
    \advance\horo@dim@x by \horo@dim@xa\relax
    \advance\horo@dim@x by \horo@dim@xb\relax
    \divide\horo@dim@x by -2\relax
    \multiply\horo@dim@y by -4\relax
    \advance\horo@dim@y by \horo@dim@ya\relax
    \advance\horo@dim@y by \horo@dim@yb\relax
    \divide\horo@dim@y by -2\relax
    \cbezier(\TG@rem@pt\horo@dim@xa,\TG@rem@pt\horo@dim@ya)%
            (\TG@rem@pt\horo@dim@x,\TG@rem@pt\horo@dim@y)%
            (\TG@rem@pt\horo@dim@x,\TG@rem@pt\horo@dim@y)%
            (\TG@rem@pt\horo@dim@xb,\TG@rem@pt\horo@dim@yb)%
  \endgroup
}
\def\horoconncurve#1#2#3{%
  \horoputcurve{#1}{\csname horo#3Pos\endcsname}%
               {#2}{\csname horo#3DPos\endcsname}%
}
\def\horo@getobjdpos#1{%
  \dimen@\csname horo#1DPos\endcsname\p@
  \horo@chartrotate
}
\def\horo@getobjsdms#1{%
  \expandafter\dimen@\csname horo#1Pos\endcsname\p@
  \horo@d@sdms
  \horo@getobjdpos{#1}%
}
\def\horo@pr#1#2#3{%
  \horo@getobjdpos{#3}%
  \horoputradial{#1}{#2}{\TG@rem@pt\dimen@}%
}
\def\horoputradials#1#2#3{%
  \horoforeach{#1}{\horo@pr{#2}{#3}}%
}
\def\horo@pt{%
  \ifdim\dimen@<360\p@
    {\horo@chartrotate
     \horoputradial{\horo@pta}{\horo@ptb}{\TG@rem@pt\dimen@}}%
    \advance\dimen@ by \horo@ptc\p@
    \expandafter\horo@pt
  \fi
}
\def\horoputticks#1#2#3{%
  \begingroup
    \edef\horo@pta{#1}\edef\horo@ptb{#2}\edef\horo@ptc{#3}%
    \dimen@=\z@
    \horo@pt
  \endgroup
}
\def\horo@pa#1#2#3{%
  \horo@getobjdpos{#3}%
  \horoputarrowhead{#1}{\TG@rem@pt\dimen@}{#2}%
}
\def\horoputarrows#1#2#3{%
  \horoforeach{#1}{\horo@pa{#2}{#3}}%
}
\def\horo@psk{
  \ifnum\count0<12\relax
    \dimen@=30pt\relax
    \dimen@\count0\dimen@\relax
    \advance\dimen@ by 15pt\relax
    \horo@chartrotate
    \advance\count0 by 1%
    \horo@putpolar{\horo@radius}{\TG@rem@pt\dimen@}%
                   {\Zodiac{\the\count0}}%
    \expandafter\horo@psk
  \fi
}
\def\horoputsignkey#1{%
  \begingroup
    \def\horo@radius{#1}%
    \count0=0\relax
    \horo@psk
  \endgroup
}
\def\horoputcusplabel#1#2#3{%
  \begingroup
    \horo@getobjsdms{#3}%
    \horo@putpolar{#1}{\TG@rem@pt\dimen@}{\Zodiac{\horo@d@sign}}%
    \def\horo@pcl@s{W}%
    \ifdim\dimen@<135\p@\def\horo@pcl@s{T}\fi
    \ifdim\dimen@>315\p@\def\horo@pcl@s{T}\fi
    \begingroup
      \advance\dimen@ by -#2\p@\horo@fixdimen@
      \horo@putpolar{#1}{\TG@rem@pt\dimen@}{%
        \expandafter\if\horo@pcl@s T%
          \horo@d@min\horominutes%
        \else
          \horo@d@deg\horodegrees%
        \fi
      }%
    \endgroup
    \advance\dimen@ by #2\p@\horo@fixdimen@
    \horo@putpolar{#1}{\TG@rem@pt\dimen@}{%
      \expandafter\if\horo@pcl@s T%
        \horo@d@deg\horodegrees%
      \else
        \horo@d@min\horominutes%
      \fi
    }%
  \endgroup
}
\def\horoputobjsymbol#1#2{%
  \begingroup
    \horo@getobjdpos{#2}%
    \horo@putpolar{#1}{\TG@rem@pt\dimen@}{\csname #2Symbol\endcsname}%
  \endgroup
}
\def\horo@pol@i#1#2#3{%
  \begingroup
    \dimen1=#1\p@\advance\dimen1by#2\p@
    \horo@getobjsdms{#3}%
    \def\horo@pol@s{H}%
    \ifdim\dimen@<45\p@\def\horo@pol@s{R}\fi
    \ifdim\dimen@>225\p@\def\horo@pol@s{R}\fi
}
\def\horoputobjdeglabel#1#2#3{%
  \horo@pol@i{#1}{#2}{#3}%
    \expandafter\if\horo@pol@s H%
      \horo@putpolar{#1}{\TG@rem@pt\dimen@}{\Zodiac{\horo@d@sign}}%
      \horo@putpolar{\TG@rem@pt\dimen1}{\TG@rem@pt\dimen@}%
                    {\horo@d@deg\horodegrees}%
    \else
      \horo@putpolar{#1}{\TG@rem@pt\dimen@}{\horo@d@deg\horodegrees}%
      \horo@putpolar{\TG@rem@pt\dimen1}{\TG@rem@pt\dimen@}%
                    {\Zodiac{\horo@d@sign}}%
    \fi
  \endgroup
}
\def\horoputobjminlabel#1#2#3{%
  \horo@pol@i{#1}{#2}{#3}%
    \expandafter\if\horo@pol@s H%
      \horo@putpolar{#1}{\TG@rem@pt\dimen@}%
                    {\horo@d@min\horominutes}%
      \horo@putpolar{\TG@rem@pt\dimen1}{\TG@rem@pt\dimen@}%
                    {\Zodiac{\horo@d@sign}}%
      \advance\dimen1by#2\p@
      \horo@putpolar{\TG@rem@pt\dimen1}{\TG@rem@pt\dimen@}%
                    {\horo@d@deg\horodegrees}%
    \else
      \horo@putpolar{#1}{\TG@rem@pt\dimen@}%
                    {\horo@d@deg\horodegrees}%
      \horo@putpolar{\TG@rem@pt\dimen1}{\TG@rem@pt\dimen@}%
                    {\Zodiac{\horo@d@sign}}%
      \advance\dimen1by#2\p@
      \horo@putpolar{\TG@rem@pt\dimen1}{\TG@rem@pt\dimen@}%
                    {\horo@d@min\horominutes}%
    \fi
  \endgroup
}
\def\horoputobjseclabel#1#2#3{%
  \horo@pol@i{#1}{#2}{#3}%
    \expandafter\if\horo@pol@s H%
      \horo@putpolar{#1}{\TG@rem@pt\dimen@}%
                    {\horo@d@sec\horoseconds}%
      \horo@putpolar{\TG@rem@pt\dimen1}{\TG@rem@pt\dimen@}%
                    {\horo@d@min\horominutes}%
      \advance\dimen1by#2\p@
      \horo@putpolar{\TG@rem@pt\dimen1}{\TG@rem@pt\dimen@}%
                    {\Zodiac{\horo@d@sign}}%
      \advance\dimen1by#2\p@
      \horo@putpolar{\TG@rem@pt\dimen1}{\TG@rem@pt\dimen@}%
                    {\horo@d@deg\horodegrees}%
    \else
      \horo@putpolar{#1}{\TG@rem@pt\dimen@}%
                    {\horo@d@deg\horodegrees}%
      \horo@putpolar{\TG@rem@pt\dimen1}{\TG@rem@pt\dimen@}%
                    {\Zodiac{\horo@d@sign}}%
      \advance\dimen1by#2\p@
      \horo@putpolar{\TG@rem@pt\dimen1}{\TG@rem@pt\dimen@}%
                    {\horo@d@min\horominutes}%
      \advance\dimen1by#2\p@
      \horo@putpolar{\TG@rem@pt\dimen1}{\TG@rem@pt\dimen@}%
                    {\horo@d@sec\horoseconds}%
    \fi
  \endgroup
}
\def\horoputrxlabel#1#2{%
  \begingroup
    \dimen@\csname horo#2Vel\endcsname\p@
    \ifdim\dimen@<\z@\relax
      \horo@getobjdpos{#2}%
      \horo@putpolar{#1}{\TG@rem@pt\dimen@}{\horoRetrogradeSymbol}%
    \fi
  \endgroup
}
\def\horoputsmartlabel#1{%
  \begingroup
    \horo@getobjsdms{#1}%
    \def\horo@psl@o{#1}%
    \def\horo@pol@s{H}%
    \ifdim\dimen@<45\p@\def\horo@pol@s{R}\fi
    \ifdim\dimen@>225\p@\def\horo@pol@s{R}\fi
    \dimen1=\horo@outerrad\p@\relax
    \expandafter\if\horo@pol@s H%
      \expandafter\horo@psl\horo@lblone Q%
    \else
      \expandafter\horo@psl\horo@lbltwo Q%
    \fi
  \endgroup
}
\def\horo@psl#1{%
  \def\horo@psl@a{#1}%
  \ifx\horo@psl@a\horo@cue\relax
  \else
    \horo@putpolar{\TG@rem@pt\dimen1}{\TG@rem@pt\dimen@}%
                  {\horo@psl@#1}%
    \advance\dimen1by-\horo@delta\p@\relax
    \expandafter\horo@psl
  \fi
}
\def\horo@psl@#1{%
  \if#1d\relax\horo@d@deg\horodegrees\fi
  \if#1m\relax\horo@d@min\horominutes\fi
  \if#1s\relax\horo@d@sec\horoseconds\fi
  \if#1z\relax\Zodiac{\horo@d@sign}\fi
  \if#1y\relax\csname \horo@psl@o Symbol\endcsname\fi
  \if#1r\relax
    \begingroup
      \dimen@\csname horo\horo@psl@o Vel\endcsname\p@
      \ifdim\dimen@<\z@\relax\horoRetrogradeSymbol\fi
    \endgroup
  \fi
}
\def\horoscanlabels#1{%
  \horo@scanlabels@ #1/#1/xQ%
}
\def\horo@scanlabels@#1/#2/#3Q{%
  \def\horo@lblone{#1}%
  \def\horo@lbltwo{#2}%
  \begingroup
    \count0=0\relax
    \horo@scanlabels@@#1Q%
    \edef\horolbllen{\the\count0}%
    \horo@fterdef\horolbllen
  \endgroup
}
\def\horo@scanlabels@@#1{%
  \def\horo@sls@@a{#1}%
  \ifx\horo@sls@@a\horo@cue\relax
  \else
    \advance\count0by1\relax
    \expandafter\horo@scanlabels@@
  \fi
}
\def\horosetsmartradii#1#2#3{
  \def\horo@outerrad{#1}%
  \begingroup
    \dimen@=#3\p@\relax
    \multiply\dimen@ by -\horolbllen\relax
    \advance\dimen@ by #2\p@\relax
    \edef\horo@delta{\TG@rem@pt\dimen@}%
    \horo@fterdef\horo@delta
  \endgroup
}
\fi
%% MAKING Q MUNDANE HERE!
\catcode`\Q=11
\ifhoro@wheels
\def\horoaspectobjectsa{\horoobjects}
\def\horoaspectobjectsb{\horoobjects}
\def\horoaspects{Opposition,Trine,Square,Sextile}
\newif\ifhoroaspectweb\horoaspectwebtrue
\def\horoConjunctionAngle{0}
\def\horoOppositionAngle{180}
\def\horoTrineAngle{120}
\def\horoSquareAngle{90}
\def\horoQuintileAngle{72}
\def\horoBiquintileAngle{144}
\def\horoSextileAngle{60}
\def\horoQuincunxAngle{150}
\def\horoSemisextileAngle{30}
\def\horoSemisquareAngle{45}
\def\horoSesquiquadrateAngle{135}
\def\horoConjunctionOrb{6}
\def\horoOppositionOrb{6}
\def\horoTrineOrb{5}
\def\horoSquareOrb{5}
\def\horoQuintileOrb{2}
\def\horoBiquintileOrb{2}
\def\horoSextileOrb{4}
\def\horoQuincunxOrb{3}
\def\horoSemisextileOrb{3}
\def\horoSemisquareOrb{2}
\def\horoSesquiquadrateOrb{2}
\def\horoputaspect#1#2#3#4{%
  \begingroup
    \edef\p@one{#1}\edef\p@two{#2}\edef\p@three{#3}%
    \dimen@=\p@two\p@\relax\horo@chartrotate\edef\p@two{\TG@rem@pt\dimen@}%
    \dimen@=\p@three\p@\relax\horo@chartrotate\edef\p@three{\TG@rem@pt\dimen@}%
    \horo@polarconvert\p@one\p@two\horo@dim@xa\horo@dim@ya
    \horo@polarconvert\p@one\p@three\horo@dim@xb\horo@dim@yb
    \Line(\TG@rem@pt\horo@dim@xa,\TG@rem@pt\horo@dim@ya)%
         (\TG@rem@pt\horo@dim@xb,\TG@rem@pt\horo@dim@yb)%
    \advance\horo@dim@xa by\horo@dim@xb
    \advance\horo@dim@ya by\horo@dim@yb
    \divide\horo@dim@xa by2\divide\horo@dim@ya by2%
    \put(\TG@rem@pt\horo@dim@xa,\TG@rem@pt\horo@dim@ya){\makebox(0,0){#4}}%
  \endgroup
}
\def\horo@aa#1#2#3#4#5#6{%
  \dimen@\csname horo#5Pos\endcsname\p@
  \advance\dimen@ by -\csname horo#6Pos\endcsname\p@
  \horo@fixdimen@diff
  \ifdim\dimen@<\z@\relax\multiply\dimen@ by -1\relax\fi
  \advance\dimen@ by -#1\p@
  \horo@fixdimen@diff
  \ifdim\dimen@<\z@\relax\multiply\dimen@ by -1\relax\fi
  \ifdim\dimen@<#2\p@\relax
    \horoputaspect{#3}{\csname horo#5Pos\endcsname}%
                  {\csname horo#6Pos\endcsname}{#4}%
  \fi
}
\def\horoautoaspect#1#2#3#4#5#6{%
  \begingroup
    \horo@dblforeach{#1}{#2}{\horo@aa{#3}{#4}{#5}{#6}}%
  \endgroup
}
\def\horo@aas#1#2{%
  \horoautoaspect{\horoaspectobjectsa}{\horoaspectobjectsb}%
    {\csname horo#2Angle\endcsname}{\csname horo#2Orb\endcsname}%
    {#1}{\csname horo#2Symbol\endcsname}%
}
\def\horoautoaspects#1{%
  \horoforeach{\horoaspects}{\horo@aas{#1}}%
}
\newif\ifhorointhouselabels\horointhouselabelsfalse
\newcounter{horohouse}
\newcommand{\horohouselabel}{%
  \Roman{horohouse}%
}
\def\horo@houses{CuspIM,CuspIIM,CuspIIIM,CuspIVM,CuspVM,CuspVIM,%
                 CuspVIIM,CuspVIIIM,CuspIXM,CuspXM,CuspXIM,CuspXIIM}
\def\horo@findcuspmid#1#2{%
  \horo@midpoint{\csname horoCusp#1DPos\endcsname}%
                {\csname horoCusp#2DPos\endcsname}%
  \expandafter\edef\csname horoCusp#1MPos\endcsname{\TG@rem@pt\dimen@}%
}
\def\horo@findcuspmids{%
  \horo@findcuspmid{I}{II}\horo@findcuspmid{II}{III}%
  \horo@findcuspmid{III}{IV}\horo@findcuspmid{IV}{V}%
  \horo@findcuspmid{V}{VI}\horo@findcuspmid{VI}{VII}%
  \horo@findcuspmid{VII}{VIII}\horo@findcuspmid{VIII}{IX}%
  \horo@findcuspmid{IX}{X}\horo@findcuspmid{X}{XI}%
  \horo@findcuspmid{XI}{XII}\horo@findcuspmid{XII}{I}%
}
\def\horo@pihl#1#2{%
  \begingroup
    \horo@getobjdpos{#2}%
    \horo@putpolar{#1}{\TG@rem@pt\dimen@}{\horohouselabel}%
    \stepcounter{horohouse}%
  \endgroup
}
\def\horoputinthouselabels#1{%
  \setcounter{horohouse}{1}%
  \horoforeach{\horo@houses}{\horo@pihl{#1}}%
}
\def\horosignificantadj{0.1}
\def\horocuspadjusttrigger{65}
\def\horoadjcycles{30}
\def\horoposattobj{20}
\def\horoposattcusp{7}
\def\hororepulsion{3}
\def\horomaxrepulsion{5.0}
\def\horooomindist{6.0}
\def\horoocmindist{4.0}
\fi
\newif\ifhoro@djusted\relax
\newif\ifhoro@djustcusps\relax
\ifhoro@wheels
\countdef\horo@i=1\relax
\def\horo@findpdiff#1#2{%
  \dimen@=\csname horo#1Pos\endcsname\p@
  \multiply\dimen@ by -1\relax
  \advance\dimen@ by\csname horo#2Pos\endcsname\p@
  \horo@fixdimen@diff
}
\def\horo@pplycorrection#1{%
  \advance\dimen@ by \csname horo#1DPos\endcsname\p@
  \horo@fixdimen@
  \expandafter\edef\csname horo#1DPos\endcsname{\TG@rem@pt\dimen@}%
}
\def\horo@djo@#1#2#3{%
  \horo@findpdiff{#3}{#2}%
  \horo@dim@x=\dimen@
  \ifdim\horo@dim@x<45\p@\relax
    \ifdim\horo@dim@x>-45\p@\relax
      \horo@findpdiff{#3D}{#2D}%
      \ifdim\horo@dim@x<\z@\multiply\dimen@ by -1\relax\fi
      \advance\dimen@ by -#1\p@
      \ifdim\dimen@>\z@
        \dimen@=\z@
      \else
        \ifdim\dimen@<-\horomaxrepulsion\p@\relax
          \dimen@=-\horomaxrepulsion\p@%
        \fi
        \divide\dimen@ by\hororepulsion\relax
      \fi
      \ifdim\horo@dim@x>\z@\multiply\dimen@ by -1\relax\fi
      \horo@pplycorrection{#2}%
    \fi
  \fi
}
\def\horo@djoo#1#2{%
  \edef\horo@tmpa{#1}\edef\horo@tmpb{#2}%
  \ifx\horo@tmpa\horo@tmpb\else
    \horo@djo@{\horooomindist}{#1}{#2}%
  \fi
}
\def\horo@djoo@same#1#2{%
  \horo@findpdiff{#2D}{#2}%
  \divide\dimen@ by#1\relax
  \horo@pplycorrection{#2}%
}
\def\horo@djcheckmovement#1{%
  \horo@findpdiff{#1D}{#1S}%
  \ifdim\dimen@<0\p@\relax\multiply\dimen@ by -1\relax\fi
  \ifdim\dimen@>\horosignificantadj\p@\relax\horo@djustedtrue\fi
}
\def\horo@djobjcycle{%
  \message{\the\horo@i}%
  \horo@djustedfalse
  \horocopyvar{\horoobjects}{DPos}{SPos}%
  \horo@dblforeach{\horoobjects}{\horoobjects}{\horo@djoo}%
  \horo@dblforeach{\horoobjects}{\horocusps}{\horo@djo@{\horoocmindist}}%
  \horoforeach{\horoobjects}{\horo@djoo@same{\horoposattobj}}%
  \horoforeach{\horoobjects}{\horo@djcheckmovement}%
  \ifhoro@djusted\else\horo@i=\horoadjcycles\relax\fi
  \ifnum\horoadjcycles>\horo@i\relax
    \advance\horo@i by1\relax
    \expandafter\horo@djobjcycle
  \fi
}
\def\horo@djcuspcycle{%
  \message{\the\horo@i}%
  \horo@djustedfalse
  \horocopyvar{\horoobjects,\horocusps}{DPos}{SPos}%
  \horo@dblforeach{\horocusps}{\horoobjects}{\horo@djo@{\horoocmindist}}%
  \horo@dblforeach{\horocusps}{\horocusps}{\horo@djoo}%
  \horo@dblforeach{\horoobjects}{\horoobjects}{\horo@djoo}%
  \horo@dblforeach{\horoobjects}{\horocusps}{\horo@djo@{\horoocmindist}}%
  \horoforeach{\horoobjects}{\horo@djoo@same{\horoposattobj}}%
  \horoforeach{\horocusps}{\horo@djoo@same{\horoposattcusp}}%
  \horoforeach{\horoobjects,\horocusps}{\horo@djcheckmovement}%
  \ifhoro@djusted\else\horo@i=\horoadjcycles\relax\fi
  \ifnum\horoadjcycles>\horo@i\relax
    \advance\horo@i by1\relax
    \expandafter\horo@djcuspcycle
  \fi
}
\def\horo@djsavedpos#1{%
  \expandafter\horo@fterdef\csname horo#1DPos\endcsname
}
\def\horo@djcheckcusps#1#2#3{%
  \edef\horo@tmpa{#2}\edef\horo@tmpb{#3}%
  \ifx\horo@tmpa\horo@tmpb
  \else
    \horo@findpdiff{#2D}{#3D}%
    \ifdim\dimen@<\z@\multiply\dimen@ by-1\relax\fi
    \ifdim\dimen@<45\p@\relax
      \multiply\dimen@ by 100\relax
      \divide\dimen@ by \horocuspadjusttrigger\relax
      \ifdim\dimen@<#1\p@\relax\horo@djustcuspstrue\fi
    \fi
  \fi
}
\def\horoadjust{%
  \ifhorocalculated
    \ifhorointhouselabels
      \horo@findcuspmids
      \horocopyvar{\horocusps}{MPos}{MDPos}%
      \let\horo@savedobjlist\horoobjects
      \edef\horoobjects{\horoobjects,\horo@houses}%
    \fi
    \begingroup
      \message{(}%
      \horo@i=1\relax
      \horo@djobjcycle
      \horo@djustcuspsfalse
      \horo@dblforeach{\horoobjects}{\horoobjects}%
                      {\horo@djcheckcusps{\horooomindist}}%
      \horo@dblforeach{\horoobjects}{\horocusps}%
                      {\horo@djcheckcusps{\horoocmindist}}%
      \ifhoro@djustcusps
        \message{C}%
        \horo@i=1\relax
        \horo@djcuspcycle
      \fi
      \message{)}%
      \horoforeach{\horocusps,\horoobjects}{\horo@djsavedpos}%
    \endgroup
    \ifhorointhouselabels\let\horoobjects\horo@savedobjlist\fi
  \fi
}
\fi
\ifhoro@templates
\def\horo@isclockwise#1#2{%
  TT\fi
  \begingroup
    \horo@findpdiff{#1}{#2}%
    \edef\horo@data{\the\dimen@}%
    \horo@fterdef\horo@data
  \endgroup
  \ifdim\horo@data>\z@\relax
}
\def\horo@anghouse#1{%
  TT\fi
  \begingroup
    \def\horo@angh@{F}%
    \if\horo@isclockwise{CuspI}{#1}\if\horo@isclockwise{#1}{CuspII}%
      \def\horo@angh@{T}%
    \fi\fi
    \if\horo@isclockwise{CuspIV}{#1}\if\horo@isclockwise{#1}{CuspV}%
      \def\horo@angh@{T}%
    \fi\fi
    \if\horo@isclockwise{CuspVII}{#1}\if\horo@isclockwise{#1}{CuspVIII}%
      \def\horo@angh@{T}%
    \fi\fi
    \if\horo@isclockwise{CuspX}{#1}\if\horo@isclockwise{#1}{CuspXI}%
      \def\horo@angh@{T}%
    \fi\fi
    \horo@fterdef\horo@angh@
  \endgroup
  \if\horo@angh@ T\relax
}
\def\horo@succhouse#1{%
  TT\fi
  \begingroup
    \def\horo@succh@{F}%
    \if\horo@isclockwise{CuspII}{#1}\if\horo@isclockwise{#1}{CuspIII}%
      \def\horo@succh@{T}%
    \fi\fi
    \if\horo@isclockwise{CuspV}{#1}\if\horo@isclockwise{#1}{CuspVI}%
      \def\horo@succh@{T}%
    \fi\fi
    \if\horo@isclockwise{CuspVIII}{#1}\if\horo@isclockwise{#1}{CuspIX}%
      \def\horo@succh@{T}%
    \fi\fi
    \if\horo@isclockwise{CuspXI}{#1}\if\horo@isclockwise{#1}{CuspXII}%
      \def\horo@succh@{T}%
    \fi\fi
    \horo@fterdef\horo@succh@
  \endgroup
  \if\horo@succh@ T\relax
}
\def\horo@montrealcurve#1#2#3{%
  \horo@midpoint{\csname horoCusp#2DPos\endcsname}%
                {\csname horoCusp#3DPos\endcsname}%
  \horoputcurve{45}{\csname horoCusp#1Pos\endcsname}{15}{\TG@rem@pt\dimen@}%
}
\def\horo@putmontrealobj#1{%
  \if\horo@succhouse{#1}%
    \horoputobjsymbol{42}{#1}%
    \horoputobjdeglabel{34}{4}{#1}%
    \horoputrxlabel{30}{#1}%
  \else
    \horoputobjsymbol{29}{#1}%
    \horoputobjdeglabel{21}{4}{#1}%
    \horoputrxlabel{17}{#1}%
  \fi
}
\def\horo@putqcobj#1{%
  \if\horo@anghouse{#1}%
    \horoputobjsymbol{28}{#1}%
    \horoputobjdeglabel{20}{4}{#1}%
    \horoputrxlabel{16}{#1}%
  \else
    \horoputobjsymbol{42}{#1}%
    \horoputobjdeglabel{34}{4}{#1}%
    \horoputrxlabel{30}{#1}%
  \fi
}
\def\horo@qcline#1#2#3#4{%
  \begingroup
    \dimen@=\csname horoCusp#2\endcsname\p@\horo@chartrotate
    \dimen1=\dimen@\relax
    \dimen@=\csname horoCusp#4\endcsname\p@\horo@chartrotate
    \horoputline{#1}{\TG@rem@pt\dimen1}%
                {#3}{\TG@rem@pt\dimen@}%
  \endgroup
}
\def\horo@dialstart#1#2{%
  \horocalcharmonic{#2}
  \begingroup
     \count0=#2\relax
     \edef\horo@dtone{\the\count0}%
     \multiply\count0 by 5\relax
     \edef\horo@dtfive{\the\count0}%
     \multiply\count0 by 2\relax
     \edef\horo@dtten{\the\count0}%
     \horo@fterdef\horo@dtone
     \horo@fterdef\horo@dtfive
     \horo@fterdef\horo@dtten
  \endgroup
  \def\hororightcoord{270}%
  \ifhoroaspectweb
    \horoautoaspects{#1}%
  \else
    \Line(-1,0)(1,0)%
    \Line(0,-1)(0,1)%
  \fi
}
\def\horo@dialwheel#1#2#3#4#5#6#7{%
  \def\horooomindist{#1}\def\horoocmindist{-90.0}%
  \put(0,0){\circle{#2}}%
  \def\hororightcoord{270}%
  \ifhorocalculated
    \horoputradials{\horoobjects}{#3}{#7}%
    \horoadjust
    \horoforeach{\horoobjects}{\horoconncurve{#4}{#5}}%
    \horoforeach{\horoobjects}{\horoputobjsymbol{#6}}%
  \fi
}
\def\horotextsize{0}
\def\horochoosetextsize{%
  \count@=\horotextsize\relax
  \multiply\count@ by-1\relax
  \advance\count@ by\horolbllen\relax
  \ifcase\the\count@\or\Large\or\large\or\normalsize\or\small\or
     \scriptsize\or\scriptsize\or\tiny\fi
}
\newcommand{\horowheelVancouver}[1][ydzmr/ymzdr]{%
  \horoscanlabels{#1}%
  \horosetsmartradii{38}{4.666}{0.333}%
  \ifhororoundauto\hororoundtominkeepdeg\fi
  \put(0,0){\circle{100}}%
  \put(0,0){\circle{90}}%
  \put(0,0){\circle{86}}%
  \put(0,0){\circle{42}}%
  \horoputticks{45}{5}{30}%
  \horoputticks{43}{1}{1}%
  \horoputticks{43}{2}{5}%
  \horoputsignkey{47.5}%
  \ifhorocalculated
    \horoputradials{\horoobjects}{41}{2}%
    \horoputradials{\horoobjects}{21}{2}%
    \ifhorodrawcusps
      \horoputradials{\horocusps}{21}{1}%
      \horoputradials{\horocusps}{42}{1}%
    \fi
    \ifhoroboldangles
      \begingroup
        \thicklines\linethickness{\horoanglecuspwidth}%
        \horoputradials{\horoangularcusps}{21}{1}%
        \ifhoroanglearrows
          \horoputradials{\horoangularcusps}{42}{0.5}%
        \else
          \horoputradials{\horoangularcusps}{42}{1}%
        \fi
      \endgroup
    \fi
    \ifhoroanglearrows
      \horoputarrows{\horoangularcusps}{43}{0.7}%
    \fi
  \fi
  \horoadjust
  \ifhorocalculated
    \horoforeach{\horoobjects}{\horoconncurve{41}{40}}%
    \horoforeach{\horoobjects}{\horoconncurve{23}{24}}%
    \ifhorodrawcusps
      \horoforeach{\horocusps}{\horoconncurve{42}{42}}%
      \horoforeach{\horocusps}{\horoconncurve{22}{22}}%
      \horoputradials{\horocusps}{22}{20}%
    \fi
    \ifhoroboldangles
      \thicklines\linethickness{\horoanglecuspwidth}%
      \horoforeach{\horoangularcusps}{\horoconncurve{42}{42}}%
      \horoforeach{\horoangularcusps}{\horoconncurve{22}{22}}%
      \horoputradials{\horoangularcusps}{22}{20}%
      \thinlines
    \fi
    {\horochoosetextsize
     \horoforeach{\horoobjects}{\horoputsmartlabel}}%
    \ifhoroaspectweb\horoautoaspects{21}\fi
    \ifhorointhouselabels\horoputinthouselabels{32}\fi
  \fi
}
\newcommand{\horowheelIqaluit}[1][1]{{%
  \horo@dialstart{42}{#1}%
  \horoputticks{42}{1}{\horo@dtone}%
  \horoputticks{42}{2}{\horo@dtfive}%
  \horoputticks{42}{3}{\horo@dtten}%
  \horo@dialwheel{5.0}{84}{42}{45}{46}{47.5}{3}%
}}
\newcommand{\horowheelIgloolik}[3][1]{{%
  \horo@dialstart{34}{#1}%
  #3\horocalcharmonic{#1}%
  \horoputticks{42}{1}{\horo@dtone}%
  \horoputticks{42}{2}{\horo@dtfive}%
  \horoputticks{42}{3}{\horo@dtten}%
  \horo@dialwheel{5.0}{84}{42}{45}{46}{47.5}{3}%
  #2\horocalcharmonic{#1}%
  \horoputticks{34}{1}{\horo@dtone}%
  \horoputticks{34}{2}{\horo@dtfive}%
  \horoputticks{34}{3}{\horo@dtten}%
  \horo@dialwheel{6.0}{68}{34}{37}{38}{39.5}{3}%
}}
\newcommand{\horowheelResolute}[4][1]{{%
  \horo@dialstart{29}{#1}%
  #4\horocalcharmonic{#1}%
  \horoputticks{43}{1}{\horo@dtone}%
  \horoputticks{43}{2}{\horo@dtfive}%
  \horo@dialwheel{5.0}{86}{43}{45}{46}{47.5}{2}%
  #3\horocalcharmonic{#1}%
  \horoputticks{36}{1}{\horo@dtone}%
  \horoputticks{36}{2}{\horo@dtfive}%
  \horo@dialwheel{6.0}{72}{36}{38}{39}{40.5}{2}%
  #2\horocalcharmonic{#1}%
  \horoputticks{29}{1}{\horo@dtone}%
  \horoputticks{29}{2}{\horo@dtfive}%
  \horo@dialwheel{7.0}{58}{29}{31}{32}{33.5}{2}%
}}
\newcommand{\horowheelRankin}[5][1]{{%
  \horo@dialstart{22}{#1}%
  #5\horocalcharmonic{#1}%
  \horoputticks{43}{1}{\horo@dtone}%
  \horoputticks{43}{2}{\horo@dtfive}%
  \horo@dialwheel{5.0}{86}{43}{45}{46}{47.5}{2}%
  #4\horocalcharmonic{#1}%
  \horoputticks{36}{1}{\horo@dtone}%
  \horoputticks{36}{2}{\horo@dtfive}%
  \horo@dialwheel{6.0}{72}{36}{38}{39}{40.5}{2}%
  #3\horocalcharmonic{#1}%
  \horoputticks{29}{1}{\horo@dtone}%
  \horoputticks{29}{2}{\horo@dtfive}%
  \horo@dialwheel{7.0}{58}{29}{31}{32}{33.5}{2}%
  #2\horocalcharmonic{#1}%
  \horoputticks{22}{1}{\horo@dtone}%
  \horoputticks{22}{2}{\horo@dtfive}%
  \horo@dialwheel{10.0}{44}{22}{24}{25}{26.5}{2}%
}}
\newcommand{\horowheelMontreal}{{%
  \def\horooomindist{10.0}\def\horoocmindist{6.0}%
  \ifhororoundauto\hororoundtodegkeepsign\fi
  \put(0,0){\circle{90}}%
  \put(0,0){\circle{30}}%
  \ifhorocalculated
    \ifhorodrawcusps
      \horoforeach{\horoangularcusps}{\horoputcusplabel{47.5}{5}}%
    \fi
  \fi
  \horoadjust
  \ifhorocalculated
    \ifhorodrawcusps
      \horo@montrealcurve{I}{II}{III}%
      \horo@montrealcurve{IV}{II}{III}%
      \horo@montrealcurve{IV}{V}{VI}%
      \horo@montrealcurve{VII}{V}{VI}%
      \horo@montrealcurve{VII}{VIII}{IX}%
      \horo@montrealcurve{X}{VIII}{IX}%
      \horo@montrealcurve{X}{XI}{XII}%
      \horo@montrealcurve{I}{XI}{XII}%
      \horoforeach{\horoangularcusps}{\horoconncurve{45}{15}}%
    \fi
    \horoforeach{\horoobjects}{\horo@putmontrealobj}%
  \fi
}}
\newcommand{\horowheelQuebecCity}{{%
  \def\horooomindist{10.0}\def\horoocmindist{6.0}%
  \ifhororoundauto\hororoundtodegkeepsign\fi
  \put(0,0){\circle{100}}%
  \put(0,0){\circle{90}}%
  \horoadjust
  \ifhorocalculated
    \horo@findcuspmids
    \let\hororightcoord=\horoCuspVIIMPos
    \ifhorodrawcusps
      \horoputradials{CuspIII,CuspVI,CuspIX,CuspXII}{20}{25}%
      \horo@qcline{45}{IMPos}{20}{IIIDPos}%
      \horo@qcline{45}{IVMPos}{20}{IIIDPos}%
      \horo@qcline{45}{IVMPos}{20}{VIDPos}%
      \horo@qcline{45}{VIIMPos}{20}{VIDPos}%
      \horo@qcline{45}{VIIMPos}{20}{IXDPos}%
      \horo@qcline{45}{XMPos}{20}{IXDPos}%
      \horo@qcline{45}{XMPos}{20}{XIIDPos}%
      \horo@qcline{45}{IMPos}{20}{XIIDPos}%
      \horo@qcline{20}{IIIDPos}{20}{VIDPos}%
      \horo@qcline{20}{VIDPos}{20}{IXDPos}%
      \horo@qcline{20}{IXDPos}{20}{XIIDPos}%
      \horo@qcline{20}{XIIDPos}{20}{IIIDPos}%
    \fi
    \horocopyvar{\horocusps}{MPos}{DPos}%
    \ifhorodrawcusps
      \horoforeach{\horocusps}{\horoputcusplabel{47.5}{5}}%
    \fi
    \horoforeach{\horoobjects}{\horo@putqcobj}%
  \fi
}}
\fi
\horocalcparms{1976}{8}{1}{17:22:19}{W123:20:38}{N48:25:53}
\endinput
%%
%% End of file `horoscop.sty'.
