code: def apparent(self):
          
          t = self.t
          position_au = self.position.au.copy()
          observer_data = self.observer_data
          gcrs_position = observer_data.gcrs_position
  
          if gcrs_position is None:
              include_earth_deflection = array((False,))
          else:
              limb_angle, nadir_angle = compute_limb_angle(
                  position_au, gcrs_position)
              include_earth_deflection = nadir_angle >= 0.8
  
          add_deflection(position_au, observer_data.bcrs_position,
                         observer_data.ephemeris, t, include_earth_deflection)
  
          add_aberration(position_au, observer_data.bcrs_velocity,
                         self.light_time)
  
          return Apparent(position_au, t=t, observer_data=observer_data)
docs: Compute an :class:`Apparent` position for this body.
  
          This applies two effects to the position that arise from
          relativity and shift slightly where the other body will appear
          in the sky: the deflection that the image will experience if its
          light passes close to large masses in the Solar System, and the
          aberration of light caused by the observer's own velocity.
  
          >>> earth.at(t).observe(mars).apparent()
          <Apparent position and velocity at date t>
  
          These transforms convert the position from the BCRS reference
          frame of the Solar System barycenter and to the reference frame
          of the observer.  In the specific case of an Earth observer, the
          output reference frame is the GCRS.