Index: /trunk/Ohana/src/relphot/src/setMrelCatalog.c
===================================================================
--- /trunk/Ohana/src/relphot/src/setMrelCatalog.c	(revision 38922)
+++ /trunk/Ohana/src/relphot/src/setMrelCatalog.c	(revision 38923)
@@ -14,4 +14,7 @@
 # define CHECK_VALID_MAG(MAG,D_MAG) (isfinite(MAG) && isfinite(D_MAG) && (MAG > -5.0) && (MAG < 30.0))
 # define CHECK_VALID_FLUX(FLUX,D_FLUX) (isfinite(FLUX) && isfinite(D_FLUX))
+
+// set A to B if B > A or if A is NAN, as long as B is not NAN
+# define MAX_NOT_NAN(A,B) { if (isfinite(B) && (!isfinite(A) || (B > A))) A = B; }
 
 static float MagToFlux (float Mag) {
@@ -160,6 +163,6 @@
     // various steps only relevant to the final pass 
     if (isSetMrelFinal) {
-      if (isfinite(measure[k].psfQF)     && (measure[k].psfQF     > results->psfQfMax[Nsec]))     results->psfQfMax[Nsec]     = measure[k].psfQF;
-      if (isfinite(measure[k].psfQFperf) && (measure[k].psfQFperf > results->psfQfPerfMax[Nsec])) results->psfQfPerfMax[Nsec] = measure[k].psfQFperf;
+      MAX_NOT_NAN (results->psfQfMax[Nsec],     measure[k].psfQF);
+      MAX_NOT_NAN (results->psfQfPerfMax[Nsec], measure[k].psfQFperf);
 
       // are we a PS1 exposure photcode? (hard-wired photcodes)
@@ -370,6 +373,6 @@
       secfilt[Nsec].psfQfPerfMax = results->psfQfPerfMax[Nsec];
 
-      if (isfinite(secfilt[Nsec].psfQfMax)     && (secfilt[Nsec].psfQfMax     > psfQfMax))     psfQfMax     = secfilt[Nsec].psfQfMax;
-      if (isfinite(secfilt[Nsec].psfQfPerfMax) && (secfilt[Nsec].psfQfPerfMax > psfQfPerfMax)) psfQfPerfMax = secfilt[Nsec].psfQfPerfMax;
+      MAX_NOT_NAN (psfQfMax,     secfilt[Nsec].psfQfMax);
+      MAX_NOT_NAN (psfQfPerfMax, secfilt[Nsec].psfQfPerfMax);
 
       StatType *apstats = &results->apstats;
@@ -749,6 +752,6 @@
     if (IS_DIFF_DB) {
       measure[k].dbFlags |= ID_MEAS_STACK_PRIMARY;
-      if (measure[k].psfQF     > results->psfQfMax[Nsec])     results->psfQfMax[Nsec]     = measure[k].psfQF;
-      if (measure[k].psfQFperf > results->psfQfPerfMax[Nsec]) results->psfQfPerfMax[Nsec] = measure[k].psfQFperf;
+      MAX_NOT_NAN (results->psfQfMax[Nsec],     measure[k].psfQF);
+      MAX_NOT_NAN (results->psfQfPerfMax[Nsec], measure[k].psfQFperf);
     }
 
@@ -826,6 +829,6 @@
       secfilt[Nsec].psfQfPerfMax = results->psfQfPerfMax[Nsec];
 
-      if (isfinite(secfilt[Nsec].psfQfMax)     && (secfilt[Nsec].psfQfMax     > psfQfMax))     psfQfMax     = secfilt[Nsec].psfQfMax;
-      if (isfinite(secfilt[Nsec].psfQfPerfMax) && (secfilt[Nsec].psfQfPerfMax > psfQfPerfMax)) psfQfPerfMax = secfilt[Nsec].psfQfPerfMax;
+      MAX_NOT_NAN (psfQfMax,     secfilt[Nsec].psfQfMax);
+      MAX_NOT_NAN (psfQfPerfMax, secfilt[Nsec].psfQfPerfMax);
     }
 
