Index: /branches/eam_branches/ipp-20111122/Ohana/src/relastro/src/bcatalog.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/relastro/src/bcatalog.c	(revision 33451)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/relastro/src/bcatalog.c	(revision 33452)
@@ -20,4 +20,14 @@
   Nmeasure = Naverage = 0;
 
+  DVOAverageFlags averageBits = 
+    ID_STAR_FEW     |
+    ID_STAR_POOR    |
+    ID_STAR_FIT_AVE |
+    ID_STAR_FIT_PM  |
+    ID_STAR_FIT_PAR |
+    ID_STAR_USE_AVE |
+    ID_STAR_USE_PM  |
+    ID_STAR_USE_PAR; 
+
   /* exclude stars not in range or with too few measurements */
   for (i = 0; i < catalog[0].Naverage; i++) {
@@ -34,9 +44,5 @@
 
     if (RESET) {
-      // XXX reset the ra,dec coords?
-      // XXX define astrometry vs photometry average.dbFlags
-      // XXX put photometry flags in secfilt (ie, per average mag?)
-      subcatalog[0].average[Naverage].flags &= ~ID_STAR_FEW;
-      subcatalog[0].average[Naverage].flags &= ~ID_STAR_POOR;
+      subcatalog[0].average[Naverage].flags &= ~averageBits;
     }
 
Index: /branches/eam_branches/ipp-20111122/Ohana/src/relastro/src/relastro_objects.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/relastro/src/relastro_objects.c	(revision 33451)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/relastro/src/relastro_objects.c	(revision 33452)
@@ -8,4 +8,20 @@
 
   Catalog catalog;
+
+  DVOMeasureFlags measureBits = 
+    ID_MEAS_POOR_ASTROM |
+    ID_MEAS_SKIP_ASTROM | 
+    ID_MEAS_USED_OBJ    |
+    ID_MEAS_USED_CHIP;
+
+  DVOAverageFlags averageBits = 
+    ID_STAR_FEW     |
+    ID_STAR_POOR    |
+    ID_STAR_FIT_AVE |
+    ID_STAR_FIT_PM  |
+    ID_STAR_FIT_PAR |
+    ID_STAR_USE_AVE |
+    ID_STAR_USE_PM  |
+    ID_STAR_USE_PAR; 
 
   // XXX need to decide how to determine PARALLEL mode...
@@ -46,11 +62,11 @@
     }
 
-    // XXX consider what gets reset (only ASTROM flags)
+    // reset only the astrometry-related average and measure bits
     if (RESET) {
       for (j = 0; j < catalog.Naverage; j++) {
-	catalog.average[j].flags = 0;
+	catalog.average[j].flags &= ~averageBits;
 	m = catalog.average[j].measureOffset;
 	for (k = 0; k < catalog.average[j].Nmeasure; k++) {
-	  catalog.measure[m+k].dbFlags = 0;
+	  catalog.measure[m+k].dbFlags &= ~measureBits;
 	}
       }
Index: /branches/eam_branches/ipp-20111122/Ohana/src/relastro/src/select_images.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/relastro/src/select_images.c	(revision 33451)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/relastro/src/select_images.c	(revision 33452)
@@ -243,8 +243,5 @@
     }
     if (RESET) {
-      // XXX do we need / want to do this in relastro?
-      // assignMcal (&image[nimage], (double *) NULL, -1);
-      // image[nimage].Mcal = NAN;
-      // image[nimage].dMcal = NAN;
+      // this only resets the astrometry image flags, not the photometry ones
       image[nimage].flags &= ~badImage;
     }
Index: /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/args.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/args.c	(revision 33451)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/args.c	(revision 33452)
@@ -237,8 +237,8 @@
   }
 
-  KEEP_UBERCAL = FALSE;
-  if ((N = get_argument (argc, argv, "-keep-ubercal"))) {
-    remove_argument (N, &argc, argv);
-    KEEP_UBERCAL = TRUE;
+  KEEP_UBERCAL = TRUE;
+  if ((N = get_argument (argc, argv, "-reset-ubercal"))) {
+    remove_argument (N, &argc, argv);
+    KEEP_UBERCAL = FALSE;
   }
 
@@ -409,8 +409,8 @@
   }
 
-  KEEP_UBERCAL = FALSE;
-  if ((N = get_argument (argc, argv, "-keep-ubercal"))) {
-    remove_argument (N, &argc, argv);
-    KEEP_UBERCAL = TRUE;
+  KEEP_UBERCAL = TRUE;
+  if ((N = get_argument (argc, argv, "-reset-ubercal"))) {
+    remove_argument (N, &argc, argv);
+    KEEP_UBERCAL = FALSE;
   }
 
Index: /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/bcatalog.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/bcatalog.c	(revision 33451)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/bcatalog.c	(revision 33452)
@@ -49,4 +49,12 @@
     if (RESET) {
       int Ns;
+      DVOSecfiltFlags secfiltBits = 
+	ID_SECF_STAR_FEW | 
+	ID_SECF_STAR_POOR | 
+	ID_PHOTOM_PASS_0 | 
+	ID_PHOTOM_PASS_1 | 
+	ID_PHOTOM_PASS_2 | 
+	ID_PHOTOM_PASS_3 | 
+	ID_PHOTOM_PASS_4;
       for (Ns = 0; Ns < Nphotcodes; Ns++) {
 
@@ -54,9 +62,14 @@
 	int Nsec = GetPhotcodeNsec(thisCode);
 
-	subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].M  = NAN;
-	subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].dM = NAN;
-	subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].Xm = NAN_S_SHORT;
-	subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].flags &= ~ID_STAR_FEW;
-	subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].flags &= ~ID_STAR_POOR;
+	subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].M      = NAN;
+	subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].Map    = NAN;
+	subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].dM     = NAN;
+	subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].Xm     = NAN;
+	subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].M_20   = NAN_S_SHORT;
+	subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].M_80   = NAN_S_SHORT;
+	subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].Ncode  = 0;
+	subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].Nused  = 0;
+	subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].flags &= ~secfiltBits;
+	subcatalog[0].secfilt[Nsecfilt*Naverage+Nsec].ubercalDist = 1000;
       }
     }
Index: /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/help.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/help.c	(revision 33451)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/help.c	(revision 33452)
@@ -37,5 +37,5 @@
   fprintf (stderr, "  -imfreeze\n");
   fprintf (stderr, "  -grid\n");
-  fprintf (stderr, "  -keep-ubercal : do not change zero point for ubercal-ed images\n");
+  fprintf (stderr, "  -reset-ubercal : also reset ubercal-ed zero points (otherwise they are sacrosanct)\n");
   fprintf (stderr, "  -area Xmin Xmax Ymin Ymax\n");
   fprintf (stderr, "  -instmag min max\n");
Index: /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/load_catalogs.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/load_catalogs.c	(revision 33451)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/load_catalogs.c	(revision 33452)
@@ -144,5 +144,5 @@
     if (VERBOSE2)      { snprintf (tmpline, 1024, "%s -vv",             command); 		     strcpy (command, tmpline); }
     if (RESET)         { snprintf (tmpline, 1024, "%s -reset",          command); 		     strcpy (command, tmpline); }
-    if (KEEP_UBERCAL)  { snprintf (tmpline, 1024, "%s -keep-ubercal",   command); 		     strcpy (command, tmpline); }
+    if (!KEEP_UBERCAL) { snprintf (tmpline, 1024, "%s -reset-ubercal",  command); 		     strcpy (command, tmpline); }
     if (DophotSelect)  { snprintf (tmpline, 1024, "%s -dophot %d",      command, DophotValue);       strcpy (command, tmpline); }
     if (ImagSelect)    { snprintf (tmpline, 1024, "%s -instmag %f %f",  command, ImagMin, ImagMax);  strcpy (command, tmpline); }
Index: /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/reload_catalogs.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/reload_catalogs.c	(revision 33451)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/reload_catalogs.c	(revision 33452)
@@ -159,5 +159,5 @@
     if (VERBOSE2)         { snprintf (tmpline, 1024, "%s -vv",          	command); 		     			  strcpy (command, tmpline); }
     if (RESET)            { snprintf (tmpline, 1024, "%s -reset",       	command); 		     			  strcpy (command, tmpline); }
-    if (KEEP_UBERCAL)     { snprintf (tmpline, 1024, "%s -keep-ubercal",	command); 		                          strcpy (command, tmpline); }
+    if (!KEEP_UBERCAL)    { snprintf (tmpline, 1024, "%s -reset-ubercal",	command); 		                          strcpy (command, tmpline); }
     if (UPDATE_CATFORMAT) { snprintf (tmpline, 1024, "%s -update-catformat %s", command, UPDATE_CATFORMAT); 		          strcpy (command, tmpline); }
     if (AreaSelect)       { snprintf (tmpline, 1024, "%s -area %f %f %f %f",    command, AreaXmin, AreaXmax, AreaYmin, AreaYmax); strcpy (command, tmpline); }
Index: /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/relphot_objects.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/relphot_objects.c	(revision 33451)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/relphot_objects.c	(revision 33452)
@@ -56,19 +56,29 @@
     }
 
-    // XXX need to respect UBERCAL measurements (and not reset them?)
-    // reset 
+    // reset the calculated average magnitudes (does not affect ubercal-tied measurements or images)
     if (RESET) {
       Nsecfilt = catalog.Nsecfilt;
+      DVOSecfiltFlags secfiltBits = 
+	ID_SECF_STAR_FEW | 
+	ID_SECF_STAR_POOR | 
+	ID_PHOTOM_PASS_0 | 
+	ID_PHOTOM_PASS_1 | 
+	ID_PHOTOM_PASS_2 | 
+	ID_PHOTOM_PASS_3 | 
+	ID_PHOTOM_PASS_4;
+
       for (j = 0; j < catalog.Naverage; j++) {
 	catalog.average[j].flags = 0;
 	for (k = 0; k < Nsecfilt; k++) {
-	  catalog.secfilt[j*Nsecfilt + k].M    	= NAN;
-	  catalog.secfilt[j*Nsecfilt + k].M_20 	= NAN_S_SHORT;
-	  catalog.secfilt[j*Nsecfilt + k].M_80 	= NAN_S_SHORT;
-	  catalog.secfilt[j*Nsecfilt + k].dM   	= NAN;
-	  catalog.secfilt[j*Nsecfilt + k].Xm    = NAN_S_SHORT;
-	  catalog.secfilt[j*Nsecfilt + k].Ncode = 0;
-	  catalog.secfilt[j*Nsecfilt + k].Nused = 0;
-	  // XXX reset the photometry flags for secfilt entries?
+	  catalog.secfilt[j*Nsecfilt + k].M    	 = NAN;
+	  catalog.secfilt[j*Nsecfilt + k].Map    = NAN;
+	  catalog.secfilt[j*Nsecfilt + k].dM   	 = NAN;
+	  catalog.secfilt[j*Nsecfilt + k].Xm     = NAN;
+	  catalog.secfilt[j*Nsecfilt + k].M_20 	 = NAN_S_SHORT;
+	  catalog.secfilt[j*Nsecfilt + k].M_80 	 = NAN_S_SHORT;
+	  catalog.secfilt[j*Nsecfilt + k].Ncode  = 0;
+	  catalog.secfilt[j*Nsecfilt + k].Nused  = 0;
+	  catalog.secfilt[j*Nsecfilt + k].flags &= ~secfiltBits;
+	  catalog.secfilt[j*Nsecfilt + k].ubercalDist = 1000;
 	}
       }
@@ -140,5 +150,5 @@
     if (VERBOSE2)      { snprintf (tmpline, 1024, "%s -vv",             command); 		     strcpy (command, tmpline); }
     if (RESET)         { snprintf (tmpline, 1024, "%s -reset",          command); 		     strcpy (command, tmpline); }
-    if (KEEP_UBERCAL)  { snprintf (tmpline, 1024, "%s -keep-ubercal",   command); 		     strcpy (command, tmpline); }
+    if (!KEEP_UBERCAL) { snprintf (tmpline, 1024, "%s -reset-ubercal",  command); 		     strcpy (command, tmpline); }
 
     fprintf (stderr, "command: %s\n", command);
Index: /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/select_images.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/select_images.c	(revision 33451)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/select_images.c	(revision 33452)
@@ -230,20 +230,18 @@
 
   found_it:
-    // XXX We claim this is a good image: write to a test file
-    // fprintf (ftest, "%s : %lf %lf  : %f %f %d %x\n", timage[i].name, RAo, DECo, timage[i].Mcal, timage[i].dMcal, timage[i].nstar, timage[i].flags);
-
     image[nimage] = timage[i]; 
-    /* always allow 'few' images to succeed, if possible */
+    /* always allow 'few' images to succeed, if possible (new images / detections may have
+     * been added) */
     if (image[nimage].flags & ID_IMAGE_PHOTOM_FEW) { 
       image[nimage].flags &= ~(ID_IMAGE_PHOTOM_FEW | ID_IMAGE_PHOTOM_POOR);
     }
     if (RESET) {
-      // XXX this needs to be thought through a bit more
       if (!KEEP_UBERCAL) {
 	image[nimage].Mcal = 0.0;
 	image[nimage].dMcal = NAN;
+	image[nimage].flags &= ~ID_IMAGE_PHOTOM_UBERCAL;
       }
       image[nimage].flags &= ~ID_IMAGE_PHOTOM_POOR;
-      image[nimage].ubercalDist = 1000; // dummy3 == ubercalDist
+      image[nimage].ubercalDist = 1000;
     }
     line_number[nimage] = i;
Index: /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/setMrelFinal.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/setMrelFinal.c	(revision 33451)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/setMrelFinal.c	(revision 33452)
@@ -37,9 +37,12 @@
       for (i = 0; i < catalog[0].Naverage; i++) {
 	off_t N = Nsecfilt*i+Nsec;
-	catalog[0].secfilt[N].M  = NAN;
-	catalog[0].secfilt[N].dM = NAN;
-	catalog[0].secfilt[N].Xm = NAN_S_SHORT;
-	catalog[0].secfilt[N].Ncode = 0;
-	catalog[0].secfilt[N].Nused = 0;
+	catalog[0].secfilt[N].M      = NAN;
+	catalog[0].secfilt[N].Map    = NAN;
+	catalog[0].secfilt[N].dM     = NAN;
+	catalog[0].secfilt[N].Xm     = NAN;
+	catalog[0].secfilt[N].M_20   = NAN_S_SHORT;
+	catalog[0].secfilt[N].M_80   = NAN_S_SHORT;
+	catalog[0].secfilt[N].Ncode  = 0;
+	catalog[0].secfilt[N].Nused  = 0;
 	catalog[0].secfilt[N].flags &= ~PHOTOM_PASSES;
 	catalog[0].secfilt[N].ubercalDist = 1000;
