Index: trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c
===================================================================
--- trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 39276)
+++ trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 39277)
@@ -371,4 +371,7 @@
 }
 
+// old: Mrel = Mcat - measure.Mcal
+// new: Mrel = Mcat - measure.Mcal - measure.Mflat
+//  or: Mave = Mcal - measure.Mcal - measure.Mflat
 float PhotRel (Measure *measure, Average *average, SecFilt *secfilt, dvoMagClassType class) {
 
@@ -394,5 +397,6 @@
     return (Mraw);
   }
-  float Mcat = Mraw - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C - measure[0].Mcal;
+  float Mflat = isfinite(measure[0].Mflat) ? measure[0].Mflat : 0.0;
+  float Mcat = Mraw - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C - measure[0].Mcal - Mflat;
 
   /* for DEP, color must be made of PRI/SEC */
@@ -1110,5 +1114,6 @@
 
   // measure.M has the static ZERO_POINT (25.0) applied, but not measure.Flux
-  float Mcal = code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C - measure[0].Mcal;
+  float Mflat = isfinite(measure[0].Mflat) ? measure[0].Mflat : 0.0;
+  float Mcal = code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C - measure[0].Mcal - Mflat;
   float Moff = Mcal - ZERO_POINT + 8.9;
   float Foff = 3630.8 * MagToFlux(Mcal);
@@ -1535,5 +1540,6 @@
     return (Mraw);
   }
-  float Mcat = Mraw - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C - measure[0].Mcal;
+  float Mflat = isfinite(measure[0].Mflat) ? measure[0].Mflat : 0.0;
+  float Mcat = Mraw - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C - measure[0].Mcal - Mflat;
 
   /* for DEP, color must be made of PRI/SEC */
