Index: trunk/Ohana/src/relphot/src/ImageOps.c
===================================================================
--- trunk/Ohana/src/relphot/src/ImageOps.c	(revision 28660)
+++ trunk/Ohana/src/relphot/src/ImageOps.c	(revision 29001)
@@ -323,5 +323,5 @@
     /* on PoorImages run, skip good images */
     if (PoorImages) {
-      bad = image[i].flags & (ID_IMAGE_FEW | ID_IMAGE_POOR | ID_IMAGE_SKIP);
+      bad = image[i].flags & (ID_IMAGE_PHOTOM_FEW | ID_IMAGE_PHOTOM_POOR | ID_IMAGE_PHOTOM_SKIP);
       if (!bad) continue;
     }      
@@ -369,8 +369,8 @@
       mark = (N < IMAGE_TOOFEW) || (N < IMAGE_GOOD_FRACTION*Nlist[i]);
       if (mark) {
-	image[i].flags |= ID_IMAGE_FEW;
+	image[i].flags |= ID_IMAGE_PHOTOM_FEW;
 	Nfew ++;
       } else {
-	image[i].flags &= ~ID_IMAGE_FEW;
+	image[i].flags &= ~ID_IMAGE_PHOTOM_FEW;
       }      
     }
@@ -387,5 +387,5 @@
 
   if (PoorImages) {
-    IMAGE_BAD = ID_IMAGE_POOR | ID_IMAGE_FEW | ID_IMAGE_SKIP;
+    IMAGE_BAD = ID_IMAGE_PHOTOM_POOR | ID_IMAGE_PHOTOM_FEW | ID_IMAGE_PHOTOM_SKIP;
     STAR_BAD  = ID_STAR_POOR | ID_STAR_FEW;
     MEAS_BAD  = ID_MEAS_NOCAL | ID_MEAS_POOR_PHOTOM | ID_MEAS_SKIP_PHOTOM | ID_MEAS_AREA;
@@ -429,11 +429,11 @@
   for (i = 0; i < Nimage; i++) {
     mark = FALSE;
-    image[i].flags &= ~ID_IMAGE_POOR;
+    image[i].flags &= ~ID_IMAGE_PHOTOM_POOR;
     mark = (image[i].dMcal > MaxScatter) || (fabs(image[i].Mcal - MedOffset) > MaxOffset);
     if (mark) { 
       Nmark ++;
-      image[i].flags |= ID_IMAGE_POOR;
+      image[i].flags |= ID_IMAGE_PHOTOM_POOR;
     } else {
-      image[i].flags &= ~ID_IMAGE_POOR;
+      image[i].flags &= ~ID_IMAGE_PHOTOM_POOR;
     }
   }
Index: trunk/Ohana/src/relphot/src/MosaicOps.c
===================================================================
--- trunk/Ohana/src/relphot/src/MosaicOps.c	(revision 28660)
+++ trunk/Ohana/src/relphot/src/MosaicOps.c	(revision 29001)
@@ -189,6 +189,6 @@
       image[im].dMcal = mosaic[i].dMcal;
       image[im].Xm = mosaic[i].Xm;
-      image[im].flags |= (mosaic[i].flags & ID_IMAGE_FEW);
-      image[im].flags |= (mosaic[i].flags & ID_IMAGE_POOR);
+      image[im].flags |= (mosaic[i].flags & ID_IMAGE_PHOTOM_FEW);
+      image[im].flags |= (mosaic[i].flags & ID_IMAGE_PHOTOM_POOR);
     }
   }      
@@ -351,5 +351,5 @@
     /* on PoorImages run, skip good images */
     if (PoorImages) {
-      bad = mosaic[i].flags & (ID_IMAGE_FEW | ID_IMAGE_POOR | ID_IMAGE_SKIP);
+      bad = mosaic[i].flags & (ID_IMAGE_PHOTOM_FEW | ID_IMAGE_PHOTOM_POOR | ID_IMAGE_PHOTOM_SKIP);
       if (!bad) continue;
     }      
@@ -401,8 +401,8 @@
       if (mark) {
 	fprintf (stderr, "marked mosaic %s ("OFF_T_FMT"), ("OFF_T_FMT" < %d) || ("OFF_T_FMT" < %f*"OFF_T_FMT")\n", image[imlist[i][0]].name,  i,  N, IMAGE_TOOFEW,  N, IMAGE_GOOD_FRACTION,  Nlist[i]);
-	mosaic[i].flags |= ID_IMAGE_FEW;
+	mosaic[i].flags |= ID_IMAGE_PHOTOM_FEW;
 	Nfew ++;
       } else {
-	mosaic[i].flags &= ~ID_IMAGE_FEW;
+	mosaic[i].flags &= ~ID_IMAGE_PHOTOM_FEW;
       }
     }
@@ -421,5 +421,5 @@
 
   if (PoorImages) {
-    IMAGE_BAD = ID_IMAGE_POOR | ID_IMAGE_FEW | ID_IMAGE_SKIP;
+    IMAGE_BAD = ID_IMAGE_PHOTOM_POOR | ID_IMAGE_PHOTOM_FEW | ID_IMAGE_PHOTOM_SKIP;
     STAR_BAD  = ID_STAR_POOR | ID_STAR_FEW;
     MEAS_BAD  = ID_MEAS_NOCAL | ID_MEAS_POOR_PHOTOM | ID_MEAS_SKIP_PHOTOM | ID_MEAS_AREA;
@@ -593,7 +593,7 @@
     if (mark) { 
       Nmark ++;
-      mosaic[i].flags |= ID_IMAGE_POOR;
+      mosaic[i].flags |= ID_IMAGE_PHOTOM_POOR;
     } else {
-      mosaic[i].flags &= ~ID_IMAGE_POOR;
+      mosaic[i].flags &= ~ID_IMAGE_PHOTOM_POOR;
     }
   }
Index: trunk/Ohana/src/relphot/src/StarOps.c
===================================================================
--- trunk/Ohana/src/relphot/src/StarOps.c	(revision 28660)
+++ trunk/Ohana/src/relphot/src/StarOps.c	(revision 29001)
@@ -188,4 +188,7 @@
   StatType stats;
   PhotCode *code;
+  DVOAverageFlags flagBits;
+
+  flagBits = ID_OBJ_EXT | ID_OBJ_EXT_ALT | ID_OBJ_GOOD | ID_OBJ_GOOD_ALT;
 
   // pre-allocate a list for stats purposes
@@ -281,15 +284,18 @@
 	}
 
+	// we attempt to set a few flags here; reset those bits before trying:
+	catalog[i].average[j].flags &= ~flagBits;
+
 	if (nEXT && (nEXT > nPSF)) {
-	  catalog[i].average[j].flags |= 0x00010000;
+	  catalog[i].average[j].flags |= ID_OBJ_EXT;
 	}
 	if (goodPS1) {
-	  catalog[i].average[j].flags |= 0x00020000;
+	  catalog[i].average[j].flags |= ID_OBJ_GOOD;
 	}
 	if (Galaxy2MASS) {
-	  catalog[i].average[j].flags |= 0x00040000;
+	  catalog[i].average[j].flags |= ID_OBJ_EXT_ALT;
 	}
 	if (good2MASS) {
-	  catalog[i].average[j].flags |= 0x00080000;
+	  catalog[i].average[j].flags |= ID_OBJ_GOOD_ALT;
 	}
       }
@@ -302,5 +308,5 @@
 }
 
-/* set measure.Mcal for all measures except ID_MEAS_NOCAL and ID_IMAGE_NOCAL */
+/* set measure.Mcal for all measures except ID_MEAS_NOCAL and ID_IMAGE_PHOTOM_NOCAL */
 int setMcalOutput (Catalog *catalog, int Ncatalog) {
 
@@ -310,5 +316,5 @@
 
   MEAS_BAD = ID_MEAS_NOCAL;
-  IMAGE_BAD = ID_IMAGE_NOCAL;
+  IMAGE_BAD = ID_IMAGE_PHOTOM_NOCAL;
 
   for (i = 0; i < Ncatalog; i++) {
@@ -470,5 +476,5 @@
       /* apply to list of all relevant measurements, including IMAGE_POOR & IMAGE_FEW */
       image_bad = IMAGE_BAD;
-      IMAGE_BAD = ID_IMAGE_NOCAL;
+      IMAGE_BAD = ID_IMAGE_PHOTOM_NOCAL;
       m = catalog[i].average[j].measureOffset;
       N = 0;
Index: trunk/Ohana/src/relphot/src/initialize.c
===================================================================
--- trunk/Ohana/src/relphot/src/initialize.c	(revision 28660)
+++ trunk/Ohana/src/relphot/src/initialize.c	(revision 29001)
@@ -27,5 +27,5 @@
   initstats (STATMODE);
 
-  IMAGE_BAD = ID_IMAGE_POOR | ID_IMAGE_FEW | ID_IMAGE_SKIP;
+  IMAGE_BAD = ID_IMAGE_PHOTOM_POOR | ID_IMAGE_PHOTOM_FEW | ID_IMAGE_PHOTOM_SKIP;
   STAR_BAD  = ID_STAR_POOR | ID_STAR_FEW;
   MEAS_BAD  = ID_MEAS_NOCAL | ID_MEAS_POOR_PHOTOM | ID_MEAS_SKIP_PHOTOM | ID_MEAS_AREA;
Index: trunk/Ohana/src/relphot/src/load_images.c
===================================================================
--- trunk/Ohana/src/relphot/src/load_images.c	(revision 28660)
+++ trunk/Ohana/src/relphot/src/load_images.c	(revision 29001)
@@ -25,4 +25,8 @@
   // convert database table to internal structure
   image = gfits_table_get_Image (&db[0].ftable, &Nimage, &db[0].swapped);
+  if (!image) {
+      fprintf (stderr, "ERROR: failed to read images\n");
+      exit (2);
+  }
 
   // select the images which overlap the selected sky regions
Index: trunk/Ohana/src/relphot/src/select_images.c
===================================================================
--- trunk/Ohana/src/relphot/src/select_images.c	(revision 28660)
+++ trunk/Ohana/src/relphot/src/select_images.c	(revision 29001)
@@ -157,11 +157,11 @@
       image[nimage] = timage[i]; 
       /* always allow 'few' images to succeed, if possible */
-      if (image[nimage].flags & ID_IMAGE_FEW) { 
-	image[nimage].flags &= ~(ID_IMAGE_FEW | ID_IMAGE_POOR);
+      if (image[nimage].flags & ID_IMAGE_PHOTOM_FEW) { 
+	image[nimage].flags &= ~(ID_IMAGE_PHOTOM_FEW | ID_IMAGE_PHOTOM_POOR);
       }
       if (RESET) {
 	assignMcal (&image[nimage], (double *) NULL, -1);
 	image[nimage].dMcal = NAN;
-	image[nimage].flags &= ~ID_IMAGE_POOR;
+	image[nimage].flags &= ~ID_IMAGE_PHOTOM_POOR;
       }
       line_number[nimage] = i;
Index: trunk/Ohana/src/relphot/src/setMrelFinal.c
===================================================================
--- trunk/Ohana/src/relphot/src/setMrelFinal.c	(revision 28660)
+++ trunk/Ohana/src/relphot/src/setMrelFinal.c	(revision 29001)
@@ -75,5 +75,5 @@
 
   /* allow measures from images marked POOR and FEW */
-  if (pass >= 3) IMAGE_BAD = ID_IMAGE_NOCAL;
+  if (pass >= 3) IMAGE_BAD = ID_IMAGE_PHOTOM_NOCAL;
   
   /* allow measures marked as outliers (POOR) and off image region (AREA) */
