src/Marando/AstroDate/Traits/SolsticeEquinoxTrait.php
private static function accurate($year, array $terms, $month) {
    $Y = $year < 1000 ? (int)$year / 1000 : ((int)$year - 2000) / 1000;
    $q = intval($month / 3) - 1;

    $jde0 = static::Horner($Y, $terms);
    for ($i = 0; $i < 100; $i++) {
      // TODO:: use vsop 87, but use IAU apparent stuff?
      $λ = Solar::ApparentEclVSOP87(AstroDate::fromJD($jde0))->λ->rad;
      $Δ = 58 * sin(deg2rad($q * 90) - $λ);
      $jde0 += $Δ;

      if (abs($Δ) < 5e-7)
        break;
    }

    return $jde0;
  }
private static function accurate($year, array $terms, $month) {
    $Y = $year < 1000 ? (int)$year / 1000 : ((int)$year - 2000) / 1000;
    $q = intval($month / 3) - 1;

    $jde0 = static::Horner($Y, $terms);
    for ($i = 0; $i < 100; $i++) {
      // TODO:: use vsop 87, but use IAU apparent stuff?
      $λ = Solar::ApparentEclVSOP87(AstroDate::fromJD($jde0))->λ->rad;
      $Δ = 58 * sin(deg2rad($q * 90) - $λ);
      $jde0 += $Δ;

      if (abs($Δ) < 5e-7)
        break;
    }

    return $jde0;
  }
private static function accurate ( $ year , array $ terms , $ month ) { $ Y = $ year < 1000 ? ( int ) $ year / 1000 : ( ( int ) $ year - 2000 ) / 1000 ; $ q = intval ( $ month / 3 ) - 1 ; $ jde0 = static :: Horner ( $ Y , $ terms ) ; for ( $ i = 0 ; $ i < 100 ; $ i ++ ) { // TODO:: use vsop 87, but use IAU apparent stuff? $ λ  olar: :A pparentEclVSOP87( A stroDate: :f romJD( $ j de0) ) - >λ -> ra d; $ Δ  8  in( d eg2rad( $ q 0) λ ); $ jde0 += $ Δ; if ( abs ( $ Δ) e-7) break ; } return $ jde0 ; }
Finds the accurate time of a solstice or equinox using the complete VSOP87
theory

@param int   $year  The year to find a solstice or equinox for
@param array $terms An array of the mean terms for the desired equinox or
solstice
@param int   $month The month of the equinox or solstice to find

@return float The JD of the solstice or equinox in TD
Finds the accurate time of a solstice or equinox using the complete VSOP87 theory