code: 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;
    }
docs: 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