Index: /tags/ipp-ops-20220705-ippref/Ohana/src/getstar/include/getstar.h
===================================================================
--- /tags/ipp-ops-20220705-ippref/Ohana/src/getstar/include/getstar.h	(revision 42268)
+++ /tags/ipp-ops-20220705-ippref/Ohana/src/getstar/include/getstar.h	(revision 42269)
@@ -35,4 +35,7 @@
 PhotCode *photcode;
 
+float EpochMJD;
+time_t EpochUnix;
+
 int  args             	     PROTO((int argc, char **argv));
 int  ConfigInit       	     PROTO((int *argc, char **argv));
Index: /tags/ipp-ops-20220705-ippref/Ohana/src/getstar/src/args.c
===================================================================
--- /tags/ipp-ops-20220705-ippref/Ohana/src/getstar/src/args.c	(revision 42268)
+++ /tags/ipp-ops-20220705-ippref/Ohana/src/getstar/src/args.c	(revision 42269)
@@ -37,4 +37,13 @@
     VERBOSE = TRUE;
     remove_argument (N, &argc, argv);
+  }
+
+  EpochUnix = 0;
+  EpochMJD = NAN;
+  if ((N = get_argument (argc, argv, "-epoch-mjd"))) {
+    remove_argument (N, &argc, argv);
+    EpochMJD = atof (argv[N]);
+    remove_argument (N, &argc, argv);
+    EpochUnix = ohana_mjd_to_sec (EpochMJD);
   }
 
Index: /tags/ipp-ops-20220705-ippref/Ohana/src/getstar/src/write_getstar_ps1_dev_0.c
===================================================================
--- /tags/ipp-ops-20220705-ippref/Ohana/src/getstar/src/write_getstar_ps1_dev_0.c	(revision 42268)
+++ /tags/ipp-ops-20220705-ippref/Ohana/src/getstar/src/write_getstar_ps1_dev_0.c	(revision 42269)
@@ -45,4 +45,16 @@
     output[i].R        = average[i].R;
     output[i].D        = average[i].D;
+    if (isfinite(EpochMJD) && isfinite(average[i].uR) && isfinite(average[i].uD)) {
+      // RA(epoch) = RA(mean) + uR*(t - Tmean)/cos(dec)
+      // XXX how does this behave near dec = 90?
+      // double dT = (EpochUnix - average[i].Tmean) / (86400*365.25);
+      // XXX refcat 20220324.v0 does not have Tmean correctly set to 2016.0 = MJD 57388.0
+      // NOTE average[i].Tmean is in UNIX, but here I am using the MJD of the Gaia DR3 reference epoch
+      double dT = (EpochMJD - 57388.0) / 365.25;
+      double dR = average[i].uR * dT / cos(RAD_DEG*average[i].D) / 3600.0;
+      double dD = average[i].uD * dT / 3600.0;
+      output[i].R += dR;
+      output[i].D += dD;
+    }
 
     output[i].code     = average[i].flags;
