Index: trunk/Ohana/src/relphot/include/relphot.h
===================================================================
--- trunk/Ohana/src/relphot/include/relphot.h	(revision 15038)
+++ trunk/Ohana/src/relphot/include/relphot.h	(revision 15509)
@@ -142,4 +142,5 @@
 int           gcatalog            PROTO((Catalog *catalog, int FINAL));
 Coords       *getCoords           PROTO((int meas, int cat));
+int           getImageEntry       PROTO((int meas, int cat));
 float         getMcal             PROTO((int meas, int cat));
 float         getMgrid            PROTO((int meas, int cat));
Index: trunk/Ohana/src/relphot/src/GridOps.c
===================================================================
--- trunk/Ohana/src/relphot/src/GridOps.c	(revision 15038)
+++ trunk/Ohana/src/relphot/src/GridOps.c	(revision 15509)
@@ -239,5 +239,5 @@
   if (!USE_GRID) return (0);
   i = bin[cat][meas];
-  if (i == -1) return (NO_MAG);
+  if (i == -1) return (NAN);
 
   value = gridM[i];
@@ -272,10 +272,9 @@
       if (catalog[c].measure[m].dbFlags & MEAS_BAD) continue;
       Mcal = getMcal  (m, c);
-      if (Mcal == NO_MAG) continue;
-      if (Mcal == NO_IMAGE) continue;
+      if (isnan(Mcal)) continue;
       Mmos = getMmos  (m, c);
-      if (Mmos == NO_MAG) continue;
-      if (Mmos == NO_IMAGE) continue;
-      if ((Mrel  = getMrel  (catalog, m, c)) == NO_MAG) continue;
+      if (isnan(Mmos)) continue;
+      Mrel  = getMrel  (catalog, m, c);
+      if (isnan(Mrel)) continue;
       
       n = catalog[c].measure[m].averef;
@@ -326,10 +325,9 @@
       }
       Mcal  = getMcal  (m, c);
-      if (Mcal == NO_MAG) continue;
-      if (Mcal == NO_IMAGE) continue;
+      if (isnan(Mcal)) continue;
       Mmos  = getMmos  (m, c);
-      if (Mmos == NO_MAG) continue;
-      if (Mmos == NO_IMAGE) continue;
-      if ((Mrel  = getMrel  (catalog, m, c)) == NO_MAG) continue;
+      if (isnan(Mmos)) continue;
+      Mrel  = getMrel  (catalog, m, c);
+      if (isnan(Mrel)) continue;
 
       n = catalog[c].measure[m].averef;
Index: trunk/Ohana/src/relphot/src/ImageOps.c
===================================================================
--- trunk/Ohana/src/relphot/src/ImageOps.c	(revision 15038)
+++ trunk/Ohana/src/relphot/src/ImageOps.c	(revision 15509)
@@ -138,4 +138,12 @@
 }
 
+int getImageEntry (int meas, int cat) {
+
+  int i;
+
+  i = bin[cat][meas];
+  return (i);
+}
+
 float getMcal (int meas, int cat) {
 
@@ -144,7 +152,7 @@
 
   i = bin[cat][meas];
-  if (i == -1) return (NO_IMAGE);
-
-  if (image[i].code & IMAGE_BAD)  return (NO_MAG);  
+  if (i == -1) return (NAN);
+
+  if (image[i].code & IMAGE_BAD) return (NAN);  
   value = image[i].Mcal;
   return (value);
@@ -197,8 +205,9 @@
       if (catalog[c].measure[m].dbFlags & MEAS_BAD) continue;
       Mmos  = getMmos  (m, c);
-      if (Mmos == NO_MAG) continue;
-      if (Mmos == NO_IMAGE) continue;
-      if ((Mgrid = getMgrid (m, c)) == NO_MAG) continue;
-      if ((Mrel  = getMrel  (catalog, m, c)) == NO_MAG) continue;
+      if (isnan(Mmos)) continue;
+      Mgrid = getMgrid (m, c);
+      if (isnan(Mgrid)) continue;
+      Mrel  = getMrel  (catalog, m, c);
+      if (isnan(Mrel)) continue;
       
       n = catalog[c].measure[m].averef;
@@ -338,5 +347,5 @@
   int i, j, m, c, n, N;
   double *list, *dlist;
-  float Mcal, Mmos;
+  float Mcal, Mmos, Mgrid;
   StatType stats;
 
@@ -357,11 +366,10 @@
       c = clist[i][j];
 
-      Mcal = getMcal  (m, c);
-      if (Mcal == NO_MAG) continue;
-      if (Mcal == NO_IMAGE) continue;
-      Mmos = getMmos  (m, c);
-      if (Mmos == NO_MAG) continue;
-      if (Mmos == NO_IMAGE) continue;
-      if (getMgrid (m, c) == NO_MAG) continue;
+      Mcal  = getMcal  (m, c);
+      if (isnan(Mcal)) continue;
+      Mmos  = getMmos  (m, c);
+      if (isnan(Mmos)) continue;
+      Mgrid = getMgrid (m, c);
+      if (isnan(Mgrid)) continue;
       N++;
     }
Index: trunk/Ohana/src/relphot/src/MosaicOps.c
===================================================================
--- trunk/Ohana/src/relphot/src/MosaicOps.c	(revision 15038)
+++ trunk/Ohana/src/relphot/src/MosaicOps.c	(revision 15509)
@@ -134,10 +134,11 @@
       Dmin = MIN (Dmin, D);
       Dmax = MAX (Dmax, D);
-      Mcal += image[m].Mcal;
+      Mcal  += image[m].Mcal;
       dMcal += image[m].dMcal;
-      Xm += image[m].Xm;
+      Xm    += image[m].Xm;
       /* we are using mosaic.Mcal, not image.Mcal. reset image.Mcal */
-      image[m].Mcal = 0.0;
-      image[m].dMcal = image[m].Xm = NO_MAG;
+      image[m].Mcal  = 0.0;
+      image[m].dMcal = NAN;
+      image[m].Xm    = NAN_S_SHORT;
     }
     dS /= Nimlist[i];
@@ -299,7 +300,7 @@
   if (!MOSAICNAME[0]) return (0);
   i = bin[cat][meas];
-  if (i == -1) return (NO_IMAGE);
-
-  if (mosaic[i].code & IMAGE_BAD) return (NO_MAG);  
+  if (i == -1) return (NAN);
+
+  if (mosaic[i].code & IMAGE_BAD) return (NAN);  
   value = mosaic[i].Mcal;
   return (value);
@@ -345,10 +346,11 @@
       c = clist[i][j];
       
+      if (catalog[c].measure[m].dbFlags & MEAS_BAD) continue;
       Mcal  = getMcal  (m, c);
-      if (Mcal == NO_MAG) continue;
-      if (Mcal == NO_IMAGE) continue;
-      if (catalog[c].measure[m].dbFlags & MEAS_BAD) continue;
-      if ((Mgrid = getMgrid (m, c)) == NO_MAG) continue;
-      if ((Mrel  = getMrel  (catalog, m, c)) == NO_MAG) continue;
+      if (isnan(Mcal)) continue;
+      Mgrid = getMgrid (m, c);
+      if (isnan(Mgrid)) continue;
+      Mrel  = getMrel  (catalog, m, c);
+      if (isnan(Mrel)) continue;
       
       n = catalog[c].measure[m].averef;
@@ -469,8 +471,9 @@
 
       Mcal = getMcal  (m, c);
-      if (Mcal == NO_MAG) continue;
-      if (Mcal == NO_IMAGE) continue;
-      if (getMgrid (m, c) == NO_MAG) continue;
-      if (getMrel  (catalog, m, c) == NO_MAG) continue;
+      if (isnan(Mcal)) continue;
+      Mgrid = getMgrid (m, c);
+      if (isnan(Mgrid)) continue;
+      Mrel = getMrel  (catalog, m, c);
+      if (isnan(Mrel)) continue;
       N++;
     }
Index: trunk/Ohana/src/relphot/src/StarOps.c
===================================================================
--- trunk/Ohana/src/relphot/src/StarOps.c	(revision 15038)
+++ trunk/Ohana/src/relphot/src/StarOps.c	(revision 15509)
@@ -26,5 +26,5 @@
 
   ave = catalog[cat].measure[meas].averef;
-  if (catalog[cat].average[ave].code & STAR_BAD) return (NO_MAG);  
+  if (catalog[cat].average[ave].code & STAR_BAD) return (NAN);  
  
   value = catalog[cat].secfilt[PhotNsec*ave+PhotSec].M;
@@ -45,20 +45,19 @@
       m = catalog[i].average[j].offset;
 
-      // XXX allow REF stars to be included in the calculation
-      // this should be optionally set, and should allow for 
-      // REF stars to be downweighted by more than their reported
-      // errors.  how such info is carried is unclear...
       N = 0;
       for (k = 0; k < catalog[i].average[j].Nm; k++, m++) {
 	if (catalog[i].measure[m].dbFlags & MEAS_BAD) continue;
-	Mcal  = getMcal  (m, i);
-	if (Mcal == NO_MAG) continue;
-	if (Mcal == NO_IMAGE) {
+	// XXX allow REF stars (no Image Entry) to be included in the calculation this
+	// should be optionally set, and should allow for REF stars to be downweighted by
+	// more than their reported errors.  how such info is carried is unclear...
+	if (getImageEntry (m, i) < 0) {
 	  Mcal = Mmos = Mgrid = 0;
 	} else {
+	  Mcal  = getMcal  (m, i);
+	  if (isnan(Mcal)) continue;
 	  Mmos  = getMmos  (m, i);
-	  if (Mmos == NO_MAG) continue;
-	  if (Mmos == NO_IMAGE) continue;
-	  if ((Mgrid = getMgrid (m, i)) == NO_MAG) continue;
+	  if (isnan(Mmos)) continue;
+	  Mgrid = getMgrid (m, i);
+	  if (isnan(Mgrid)) continue;
 	}
 
@@ -78,5 +77,5 @@
       catalog[i].secfilt[PhotNsec*j+PhotSec].M  = stats.mean;
       catalog[i].secfilt[PhotNsec*j+PhotSec].dM = stats.sigma;
-      catalog[i].secfilt[PhotNsec*j+PhotSec].Xm = (stats.Nmeas > 1) ? 100.0*log10(stats.chisq) : NO_MAG;
+      catalog[i].secfilt[PhotNsec*j+PhotSec].Xm = (stats.Nmeas > 1) ? 100.0*log10(stats.chisq) : NAN_S_SHORT;
     }
   }
@@ -111,13 +110,16 @@
       for (k = 0; k < catalog[i].average[j].Nm; k++, m++) {
 	if (catalog[i].measure[m].dbFlags & MEAS_BAD) continue;
-	Mcal  = getMcal  (m, i);
-	if (Mcal == NO_MAG) continue;
-	if (Mcal == NO_IMAGE) {
+	// XXX allow REF stars (no Image Entry) to be included in the calculation this
+	// should be optionally set, and should allow for REF stars to be downweighted by
+	// more than their reported errors.  how such info is carried is unclear...
+	if (getImageEntry (m, i) < 0) {
 	  Mcal = Mmos = Mgrid = 0;
 	} else {
+	  Mcal  = getMcal  (m, i);
+	  if (isnan(Mcal)) continue;
 	  Mmos  = getMmos  (m, i);
-	  if (Mmos == NO_MAG) continue;
-	  if (Mmos == NO_IMAGE) continue;
-	  if ((Mgrid = getMgrid (m, i)) == NO_MAG) continue;
+	  if (isnan(Mmos)) continue;
+	  Mgrid = getMgrid (m, i);
+	  if (isnan(Mgrid)) continue;
 	}
 
@@ -135,5 +137,5 @@
       catalog[i].secfilt[PhotNsec*j+PhotSec].M  = stats.mean;
       catalog[i].secfilt[PhotNsec*j+PhotSec].dM = MAX (stats.error, stats.sigma);
-      catalog[i].secfilt[PhotNsec*j+PhotSec].Xm = (stats.Nmeas > 1) ? 100.0*log10(stats.chisq) : NO_MAG;
+      catalog[i].secfilt[PhotNsec*j+PhotSec].Xm = (stats.Nmeas > 1) ? 100.0*log10(stats.chisq) : NAN_S_SHORT;
     }
   }
@@ -160,10 +162,9 @@
 	if (catalog[i].measure[m].dbFlags & MEAS_BAD) continue;
 	Mcal  = getMcal  (m, i);
-	if (Mcal == NO_MAG) continue;
-	if (Mcal == NO_IMAGE) continue;
+	if (isnan(Mcal)) continue;
 	Mmos  = getMmos  (m, i);
-	if (Mmos == NO_MAG) continue;
-	if (Mmos == NO_IMAGE) continue;
-	if ((Mgrid = getMgrid (m, i)) == NO_MAG) continue;
+	if (isnan(Mmos)) continue;
+	Mgrid = getMgrid (m, i);
+	if (isnan(Mgrid)) continue;
 	catalog[i].measure[m].Mcal = Mcal + Mmos + Mgrid;
       }
@@ -216,5 +217,5 @@
       Xm = catalog[i].secfilt[PhotNsec*j+PhotSec].Xm;
       Chisq = pow (10.0, 0.01*Xm);
-      mark = (dM > MaxScatter) || (Xm == NO_MAG) || (Chisq > MaxChisq);
+      mark = (dM > MaxScatter) || (Xm == NAN_S_SHORT) || (Chisq > MaxChisq);
       if (mark) {
 	catalog[i].average[j].code |= ID_STAR_POOR;
@@ -274,10 +275,9 @@
 	/* if (catalog[i].measure[m].dbFlags & MEAS_BAD) continue; */
 	Mcal  = getMcal  (m, i);
-	if (Mcal == NO_MAG) continue;
-	if (Mcal == NO_IMAGE) continue;
+	if (isnan(Mcal)) continue;
 	Mmos  = getMmos  (m, i);
-	if (Mmos == NO_MAG) continue;
-	if (Mmos == NO_IMAGE) continue;
-	if ((Mgrid = getMgrid (m, i)) == NO_MAG) continue;
+	if (isnan(Mmos)) continue;
+	Mgrid = getMgrid (m, i);
+	if (isnan(Mgrid)) continue;
 
 	Msys = PhotSys (&catalog[i].measure[m], &catalog[i].average[j], &catalog[i].secfilt[j*PhotNsec]);
@@ -310,10 +310,9 @@
 	/* if (catalog[i].measure[m].dbFlags & MEAS_BAD) continue; */
 	Mcal  = getMcal  (m, i);
-	if (Mcal == NO_MAG) continue;
-	if (Mcal == NO_IMAGE) continue;
+	if (isnan(Mcal)) continue;
 	Mmos  = getMmos  (m, i);
-	if (Mmos == NO_MAG) continue;
-	if (Mmos == NO_IMAGE) continue;
-	if ((Mgrid = getMgrid (m, i)) == NO_MAG) continue;
+	if (isnan(Mmos)) continue;
+	Mgrid = getMgrid (m, i);
+	if (isnan(Mgrid)) continue;
 
 	Msys = PhotSys (&catalog[i].measure[m], &catalog[i].average[j], &catalog[i].secfilt[j*PhotNsec]);
@@ -368,10 +367,9 @@
       for (k = 0; k < catalog[i].average[j].Nm; k++, m++) {
 	Mcal = getMcal  (m, i);
-	if (Mcal == NO_MAG) continue;
-	if (Mcal == NO_IMAGE) continue;
+	if (isnan(Mcal)) continue;
 	Mmos = getMmos  (m, i);
-	if (Mmos == NO_MAG) continue;
-	if (Mmos == NO_IMAGE) continue;
-	if (getMgrid (m, i) == NO_MAG) continue;
+	if (isnan(Mmos)) continue;
+	Mgrid = getMgrid (m, i);
+	if (isnan(Mgrid)) continue;
 	N++;
       }
@@ -411,5 +409,5 @@
 
       Xm = catalog[i].secfilt[PhotNsec*j+PhotSec].Xm;
-      if (Xm == NO_MAG) continue;
+      if (Xm == NAN_S_SHORT) continue;
       list[n] = pow (10.0, 0.01*Xm);
       dlist[n] = 1;
@@ -508,5 +506,5 @@
       xlist[N] = catalog[i].secfilt[PhotNsec*j+PhotSec].M;
       value    = catalog[i].secfilt[PhotNsec*j+PhotSec].Xm;
-      if (value == NO_MAG) continue;
+      if (value == NAN_S_SHORT) continue;
       ylist[N] = 0.01*value;
       N++;
Index: trunk/Ohana/src/relphot/src/bcatalog.c
===================================================================
--- trunk/Ohana/src/relphot/src/bcatalog.c	(revision 15038)
+++ trunk/Ohana/src/relphot/src/bcatalog.c	(revision 15509)
@@ -27,6 +27,6 @@
 
     if (RESET) {
-      subcatalog[0].secfilt[PhotNsec*Naverage+PhotSec].M  = NO_MAG;
-      subcatalog[0].secfilt[PhotNsec*Naverage+PhotSec].dM = NO_MAG;
+      subcatalog[0].secfilt[PhotNsec*Naverage+PhotSec].M  = NAN;
+      subcatalog[0].secfilt[PhotNsec*Naverage+PhotSec].dM = NAN;
       subcatalog[0].average[Naverage].code &= ~ID_STAR_FEW;
       subcatalog[0].average[Naverage].code &= ~ID_STAR_POOR;
Index: trunk/Ohana/src/relphot/src/plot_scatter.c
===================================================================
--- trunk/Ohana/src/relphot/src/plot_scatter.c	(revision 15038)
+++ trunk/Ohana/src/relphot/src/plot_scatter.c	(revision 15509)
@@ -28,11 +28,10 @@
       for (k = 0; k < catalog[i].average[j].Nm; k++, m++) {
 	if (catalog[i].measure[m].dbFlags & MEAS_BAD) continue;
-	Mcal  = getMcal  (m, i);
-	if (Mcal == NO_MAG) continue;
-	if (Mcal == NO_IMAGE) continue;
-	Mmos  = getMmos  (m, i);
-	if (Mmos == NO_MAG) continue;
-	if (Mmos == NO_IMAGE) continue;
-	if ((Mgrid = getMgrid (m, i)) == NO_MAG) continue;
+	Mcal = getMcal  (m, i);
+	if (isnan(Mcal)) continue;
+	Mmos = getMmos  (m, i);
+	if (isnan(Mmos)) continue;
+	Mgrid = getMgrid (m, i);
+	if (isnan(Mgrid)) continue;
 
 	Mrel = catalog[i].secfilt[PhotNsec*j+PhotSec].M;
Index: trunk/Ohana/src/relphot/src/select_images.c
===================================================================
--- trunk/Ohana/src/relphot/src/select_images.c	(revision 15038)
+++ trunk/Ohana/src/relphot/src/select_images.c	(revision 15509)
@@ -138,5 +138,5 @@
       if (RESET) {
 	assignMcal (&image[nimage], (double *) NULL, -1);
-	image[nimage].dMcal = NO_MAG;
+	image[nimage].dMcal = NAN;
 	image[nimage].code &= ~ID_IMAGE_POOR;
       }
Index: trunk/Ohana/src/relphot/src/setMrelFinal.c
===================================================================
--- trunk/Ohana/src/relphot/src/setMrelFinal.c	(revision 15038)
+++ trunk/Ohana/src/relphot/src/setMrelFinal.c	(revision 15509)
@@ -9,7 +9,7 @@
 
     for (i = 0; i < catalog[0].Naverage; i++) {
-      catalog[0].secfilt[PhotNsec*i+PhotSec].M = NO_MAG;
-      catalog[0].secfilt[PhotNsec*i+PhotSec].dM = NO_MAG;
-      catalog[0].secfilt[PhotNsec*i+PhotSec].Xm = NO_MAG;
+      catalog[0].secfilt[PhotNsec*i+PhotSec].M  = NAN;
+      catalog[0].secfilt[PhotNsec*i+PhotSec].dM = NAN;
+      catalog[0].secfilt[PhotNsec*i+PhotSec].Xm = NAN_S_SHORT;
 
       m = catalog[0].average[i].offset;
@@ -106,6 +106,6 @@
       /* skip measurements from BAD images and mosaics */
       /* do NOT skip measurements without a matching image */
-      if ((getMcal  (m, 0)) == NO_MAG) goto skip;
-      if ((getMmos  (m, 0)) == NO_MAG) goto skip;
+      if (isnan(getMcal (m, 0))) goto skip;
+      if (isnan(getMmos (m, 0))) goto skip;
 
       /* skip measurements by inst mag limit */
