code: public function sidereal($mode = 'a', Angle $lon = null)
      {
          // Get UT1 time
          $ut  = $this->copy()->toUT1();
          $uta = $ut->jd;
          $utb = $ut->dayFrac;
          $ut  = null;
  
          // Get TT time
          $tt  = $this->copy()->toTT();
          $tta = $tt->jd;
          $ttb = $tt->dayFrac;
          $tt  = null;
  
          // Compute either GMST or GAST
          $st;
          if ($mode == 'a') {
              $strad = IAU::Gst06a($uta, $utb, $tta, $ttb);
          } else {
              $strad = IAU::Gmst06($uta, $utb, $tta, $ttb);
          }
  
          // Add longitude if relevant
          if ($lon) {
              $st = Angle::rad($strad)->add($lon)->norm()->toTime();
          } else {
              $st = Angle::rad($strad)->toTime();
          }
  
          // Return as hours
          return $st;
      }
docs: Finds the sidereal time of this intsance
  
  @param type  $mode Type of sidereal time... (a = apparent, m = mean)
  @param Angle $lon  If a longitude is supplied, finds local sidereal time,
  otherwise returns sidereal time at Greenwich