Index: trunk/Ohana/src/relastro/include/relastro.h
===================================================================
--- trunk/Ohana/src/relastro/include/relastro.h	(revision 39389)
+++ trunk/Ohana/src/relastro/include/relastro.h	(revision 39390)
@@ -748,5 +748,5 @@
 int CatalogMaxNmeasure (Catalog *catalog, int Ncatalog);
 int FitAstromPoints_Project (FitStats *fitStats, double *Tmean, double *Trange, double *parRange);
-int UpdateObjects_SelectMeasures (FitStats *fit, Average *average, SecFilt *secfilt, MeasureTiny *measure, Measure *measureBig, int isStack);
+int UpdateObjects_SelectMeasures (FitStats *fit, Average *average, SecFilt *secfilt, MeasureTiny *measure, Measure *measureBig, int isStack, int *stackEntry);
 int UpdateObjects_Stack (Average *average, SecFilt *secfilt, MeasureTiny *measure, Measure *measureBig, int Nsecfilt, FitStats *fitStats);
 int UpdateObjects_Chips (Average *average, SecFilt *secfilt, MeasureTiny *measure, Measure *measureBig, int Nsecfilt, FitStats *fitStats, int cat, off_t measOff);
Index: trunk/Ohana/src/relastro/src/UpdateObjects.c
===================================================================
--- trunk/Ohana/src/relastro/src/UpdateObjects.c	(revision 39389)
+++ trunk/Ohana/src/relastro/src/UpdateObjects.c	(revision 39390)
@@ -18,4 +18,18 @@
 int DumpObjectsWith2MASS (Catalog *catalog, int Ncatalog);
 
+static DVOAverageFlags astromBits = 
+  ID_OBJ_LARGE_PM        | // star with large proper motion
+  ID_OBJ_RAW_AVE     	   | // simple weighted average position was used (no IRLS fitting)
+  ID_OBJ_FIT_AVE         | // average position was fitted
+  ID_OBJ_FIT_PM          | // proper motion model was fitted
+  ID_OBJ_FIT_PAR         | // parallax model was fitted
+  ID_OBJ_USE_AVE         | // average position used (not PM or PAR)
+  ID_OBJ_USE_PM          | // proper motion used (not AVE or PAR)
+  ID_OBJ_USE_PAR         | // parallax used (not AVE or PM)
+  ID_OBJ_NO_MEAN_ASTROM  | // mean astrometry could not be measured
+  ID_OBJ_STACK_FOR_MEAN  | // stack position used for mean astrometry
+  ID_OBJ_MEAN_FOR_STACK  | // mean astrometry could not be measured
+  ID_OBJ_BAD_PM;           // failure to measure proper-motion model
+
 // This function operates on both Measure and MeasureTiny.  In the big stages, this should
 // be called with just MeasureTiny set and Measure == NULL
@@ -56,4 +70,6 @@
       SecFilt *secfilt = &catalog[i].secfilt[j*Nsecfilt];
 
+      if (RESET) { average[0].flags &= ~astromBits; }
+
       UpdateObjects_Stack(average, secfilt, measure, measureBig, Nsecfilt, fitStatsStack);
       UpdateObjects_Chips(average, secfilt, measure, measureBig, Nsecfilt, fitStatsChips, i, m);
@@ -133,5 +149,5 @@
 
   // select the measurements to be used in this analysis
-  UpdateObjects_SelectMeasures (fitStats, average, secfilt, measure, measureBig, FALSE);
+  UpdateObjects_SelectMeasures (fitStats, average, secfilt, measure, measureBig, FALSE, NULL);
 
   // if there are no exposure detections, use the stack position
@@ -555,5 +571,6 @@
 
   // select the measurements to be used in this analysis
-  status = UpdateObjects_SelectMeasures (fitStats, average, secfilt, measure, measureBig, TRUE);
+  int stackEntry = -1;
+  status = UpdateObjects_SelectMeasures (fitStats, average, secfilt, measure, measureBig, TRUE, &stackEntry);
   if (status & SELECT_MEAS_HAS_STACK) {
     // if we have any stack measurements, set the default value to the mean position
@@ -561,8 +578,13 @@
     // if we exit this function without updating the stack position, it means we 
     // have a stack measurement, but not a good stack measuremetn
+
     average[0].Rstk  = average[0].R; // RA in degrees
     average[0].Dstk  = average[0].D; // DEC in degrees
     average[0].dRstk = average[0].dR; // RA scatter in arcsec
     average[0].dDstk = average[0].dD; // DEC scatter in arcsec
+    if (stackEntry > -1) {
+      // save the epoch for one of the stacks
+      average[0].Tmean = measure[stackEntry].t;
+    }
     average[0].flags |= ID_OBJ_MEAN_FOR_STACK;
   }
@@ -627,5 +649,5 @@
 }
 
-int UpdateObjects_SelectMeasures (FitStats *fit, Average *average, SecFilt *secfilt, MeasureTiny *measure, Measure *measureBig, int isStack) {
+int UpdateObjects_SelectMeasures (FitStats *fit, Average *average, SecFilt *secfilt, MeasureTiny *measure, Measure *measureBig, int isStack, int *stackEntry) {
 
   // I've already allocated fit->points (and fit->sample) with space for fit->NpointsAlloc entries
@@ -633,4 +655,5 @@
   int has2MASS = FALSE;
   int hasStack = FALSE;
+  if (stackEntry) *stackEntry = -1;
 
   int Npoints = fit->Npoints = 0;
@@ -662,4 +685,5 @@
       if (!isGPC1stack(measure[k].photcode)) continue;
       hasStack = TRUE;
+      if (stackEntry && *stackEntry == -1) *stackEntry = k; // save a reference to one of the valid stack entries
     } else {
       if ( isGPC1stack(measure[k].photcode)) continue;
Index: trunk/Ohana/src/relastro/src/args.c
===================================================================
--- trunk/Ohana/src/relastro/src/args.c	(revision 39389)
+++ trunk/Ohana/src/relastro/src/args.c	(revision 39390)
@@ -285,11 +285,11 @@
   }
 
-  N_BOOTSTRAP_SAMPLES = 1;
+  N_BOOTSTRAP_SAMPLES = 100;
   if ((N = get_argument (argc, argv, "-bootstrap-samples"))) {
     remove_argument (N, &argc, argv);
     N_BOOTSTRAP_SAMPLES = atoi (argv[N]);
     remove_argument (N, &argc, argv);
-    if ((N_BOOTSTRAP_SAMPLES < 1) || ((N_BOOTSTRAP_SAMPLES > 1) && (N_BOOTSTRAP_SAMPLES < 20))) {
-      fprintf (stderr, "-bootstrap-samples must be either 1 (no sampling) or >= 20\n");
+    if ((N_BOOTSTRAP_SAMPLES > 0) && (N_BOOTSTRAP_SAMPLES < 20)) {
+      fprintf (stderr, "-bootstrap-samples must be either 0 (no sampling) or >= 20\n");
       exit (2);
     }
@@ -749,11 +749,11 @@
   }
 
-  N_BOOTSTRAP_SAMPLES = 1;
+  N_BOOTSTRAP_SAMPLES = 100;
   if ((N = get_argument (argc, argv, "-bootstrap-samples"))) {
     remove_argument (N, &argc, argv);
     N_BOOTSTRAP_SAMPLES = atoi (argv[N]);
     remove_argument (N, &argc, argv);
-    if ((N_BOOTSTRAP_SAMPLES < 1) || ((N_BOOTSTRAP_SAMPLES > 1) && (N_BOOTSTRAP_SAMPLES < 20))) {
-      fprintf (stderr, "-bootstrap-samples must be either 1 (no sampling) or >= 20\n");
+    if ((N_BOOTSTRAP_SAMPLES > 0) && (N_BOOTSTRAP_SAMPLES < 20)) {
+      fprintf (stderr, "-bootstrap-samples must be either 0 (no sampling) or >= 20\n");
       exit (2);
     }
