def atEpoch(self, epoch=<NUM_LIT>):
projected = copy.deepcopy(self.standardized)<EOL>try:<EOL><INDENT>epoch.year<EOL>newobstime = epoch<EOL><DEDENT>except AttributeError:<EOL><INDENT>try:<EOL><INDENT>newobstime = epoch.decimalyear*u.year<EOL><DEDENT>except AttributeError:<EOL><INDENT>newobstime = epoch*u.year<EOL><DEDENT><DEDENT>dt = newobstime - self.obstime<EOL>try:<EOL><INDENT>newra = (self.ra + self.pm_ra_cosdec/np.cos(self.dec)*dt).to(u.deg)<EOL>newdec = (self.dec + self.pm_dec*dt).to(u.deg)<EOL><DEDENT>except TypeError:<EOL><INDENT>newra = self.ra<EOL>newdec = self.dec<EOL>self.speak('<STR_LIT>'.format(self.name))<EOL><DEDENT>projected['<STR_LIT>'] = newra<EOL>projected['<STR_LIT>'] = newdec<EOL>projected['<STR_LIT>'] = newobstime<EOL>return self.__class__(projected)<EOL>
Return SkyCoords of the objects, propagated to a (single) given epoch.

Parameters
----------
epoch : Time, or float
    Either an astropy time, or a decimal year of the desired epoch.

Returns
-------
coordinates : SkyCoord(s)
    The coordinates, propagated to the given epoch,
    with that epoch stored in the obstime attribute.