src/Marando/AstroDate/Traits/SolsticeEquinoxTrait.php
private static function approx($year, array $terms) {
    // Find appropriate year term and calculate approximate JDE
    $Y    = $year < 1000 ? (int)$year / 1000 : ((int)$year - 2000) / 1000;
    $jde0 = static::Horner($Y, $terms);

    // Calculate T and other required values
    $T  = ($jde0 - 2451545.0 ) / 36525;
    $W  = deg2rad(35999.373 * $T - 2.47);
    $Δλ = 1 + 0.0334 * cos($W) + 0.0007 * cos(2 * $W);

    // Sum the periodic terms for the solstice or equinox
    $S = 0;
    foreach (static::periodicTerms() as $term)
      $S += $term[0] * cos(deg2rad($term[1]) + deg2rad($term[2]) * $T);

    // Calculate the time of the solstice or equinox
    $jde = $jde0 + ((0.00001 * $S) / $Δλ);
    return $jde;
  }
private static function approx($year, array $terms) {
    // Find appropriate year term and calculate approximate JDE
    $Y    = $year < 1000 ? (int)$year / 1000 : ((int)$year - 2000) / 1000;
    $jde0 = static::Horner($Y, $terms);

    // Calculate T and other required values
    $T  = ($jde0 - 2451545.0 ) / 36525;
    $W  = deg2rad(35999.373 * $T - 2.47);
    $Δλ = 1 + 0.0334 * cos($W) + 0.0007 * cos(2 * $W);

    // Sum the periodic terms for the solstice or equinox
    $S = 0;
    foreach (static::periodicTerms() as $term)
      $S += $term[0] * cos(deg2rad($term[1]) + deg2rad($term[2]) * $T);

    // Calculate the time of the solstice or equinox
    $jde = $jde0 + ((0.00001 * $S) / $Δλ);
    return $jde;
  }
Finds the approximate time of a solstice or equinox in TD

@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

@return float The JD of the solstice or equinox in TD