Index: /branches/eam_branches/ipp-20140610/Ohana/src/addstar/src/find_matches.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/addstar/src/find_matches.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/addstar/src/find_matches.c	(revision 36910)
@@ -202,5 +202,5 @@
       if (Nsec > -1) { 
 	if (isnan(catalog[0].secfilt[n*Nsecfilt+Nsec].M)) {
-	  catalog[0].secfilt[n*Nsecfilt+Nsec].M = PhotCat (&catalog[0].measure[Nmeas]);
+	  catalog[0].secfilt[n*Nsecfilt+Nsec].M = PhotCat (&catalog[0].measure[Nmeas], MAG_CLASS_PSF);
 	}
       }
@@ -290,5 +290,5 @@
       /* in UPDATE mode, this value is not saved; use relphot to recalculate */
       if (Nsec > -1) { 
-	catalog[0].secfilt[Nave*Nsecfilt+Nsec].M = PhotCat (&catalog[0].measure[Nmeas]);
+	catalog[0].secfilt[Nave*Nsecfilt+Nsec].M = PhotCat (&catalog[0].measure[Nmeas], MAG_CLASS_PSF);
       }
 
Index: /branches/eam_branches/ipp-20140610/Ohana/src/addstar/src/find_matches_closest.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/addstar/src/find_matches_closest.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/addstar/src/find_matches_closest.c	(revision 36910)
@@ -230,5 +230,5 @@
     if (Nsec > -1) { 
       if (isnan(catalog[0].secfilt[n*Nsecfilt+Nsec].M)) {
-	catalog[0].secfilt[n*Nsecfilt+Nsec].M = PhotCat (&catalog[0].measure[Nmeas]);
+	catalog[0].secfilt[n*Nsecfilt+Nsec].M = PhotCat (&catalog[0].measure[Nmeas], MAG_CLASS_PSF);
       }
     }
@@ -298,5 +298,5 @@
         /* in UPDATE mode, this value is not saved; use relphot to recalculate */
         if (Nsec > -1) { 
-            catalog[0].secfilt[Nave*Nsecfilt+Nsec].M = PhotCat (&catalog[0].measure[Nmeas]);
+            catalog[0].secfilt[Nave*Nsecfilt+Nsec].M = PhotCat (&catalog[0].measure[Nmeas], MAG_CLASS_PSF);
         }
 
Index: /branches/eam_branches/ipp-20140610/Ohana/src/getstar/src/select_by_region.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/getstar/src/select_by_region.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/getstar/src/select_by_region.c	(revision 36910)
@@ -73,5 +73,5 @@
         for (m = 0; m < catalog[0].average[i].Nmeasure; m++) {
           if (catalog[0].measure[offset + m].photcode == code) {
-            mag = PhotRel (&catalog[0].measure[offset + m], &catalog[0].average[i], &catalog[0].secfilt[i*Nsecfilt]);
+            mag = PhotRel (&catalog[0].measure[offset + m], &catalog[0].average[i], &catalog[0].secfilt[i*Nsecfilt], MAG_CLASS_PSF);
             break;
           }
@@ -126,5 +126,5 @@
         for (m = 0; m < catalog[0].average[i].Nmeasure; m++) {
           if (catalog[0].measure[offset + m].photcode == code) {
-            mag = PhotRel (&catalog[0].measure[offset + m], &catalog[0].average[i], &catalog[0].secfilt[i*Nsecfilt]);
+            mag = PhotRel (&catalog[0].measure[offset + m], &catalog[0].average[i], &catalog[0].secfilt[i*Nsecfilt], MAG_CLASS_PSF);
             break;
           }
Index: /branches/eam_branches/ipp-20140610/Ohana/src/getstar/src/write_getstar_ps1_dev_0.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/getstar/src/write_getstar_ps1_dev_0.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/getstar/src/write_getstar_ps1_dev_0.c	(revision 36910)
@@ -61,5 +61,5 @@
       for (m = 0; m < average[i].Nmeasure; m++) {
         if (measure[offset + m].photcode == code_c0) {
-          output[i].mag = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt]);
+          output[i].mag = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt], MAG_CLASS_PSF);
 	  break;
         }
@@ -75,5 +75,5 @@
       for (m = 0; m < average[i].Nmeasure; m++) {
         if (measure[offset + m].photcode == code_c1) {
-          output[i].c1 = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt]);
+          output[i].c1 = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt], MAG_CLASS_PSF);
 	  break;
         }
@@ -89,5 +89,5 @@
       for (m = 0; m < average[i].Nmeasure; m++) {
         if (measure[offset + m].photcode == code_c2) {
-          output[i].c2 = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt]);
+          output[i].c2 = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt], MAG_CLASS_PSF);
 	  break;
         }
Index: /branches/eam_branches/ipp-20140610/Ohana/src/getstar/src/write_getstar_ps1_dev_1.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/getstar/src/write_getstar_ps1_dev_1.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/getstar/src/write_getstar_ps1_dev_1.c	(revision 36910)
@@ -64,5 +64,5 @@
       for (m = 0; m < average[i].Nmeasure; m++) {
         if (measure[offset + m].photcode == code_c0) {
-          output[i].mag = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt]);
+          output[i].mag = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt], MAG_CLASS_PSF);
 	  break;
         }
@@ -78,5 +78,5 @@
       for (m = 0; m < average[i].Nmeasure; m++) {
         if (measure[offset + m].photcode == code_c1) {
-          output[i].c1 = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt]);
+          output[i].c1 = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt], MAG_CLASS_PSF);
 	  break;
         }
@@ -92,5 +92,5 @@
       for (m = 0; m < average[i].Nmeasure; m++) {
         if (measure[offset + m].photcode == code_c2) {
-          output[i].c2 = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt]);
+          output[i].c2 = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt], MAG_CLASS_PSF);
 	  break;
         }
Index: /branches/eam_branches/ipp-20140610/Ohana/src/getstar/src/write_getstar_ps1_dev_2.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/getstar/src/write_getstar_ps1_dev_2.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/getstar/src/write_getstar_ps1_dev_2.c	(revision 36910)
@@ -70,5 +70,5 @@
       for (m = 0; m < average[i].Nmeasure; m++) {
         if (measure[offset + m].photcode == code_c0) {
-          output[i].mag = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt]);
+          output[i].mag = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt], MAG_CLASS_PSF);
 	  break;
         }
@@ -84,5 +84,5 @@
       for (m = 0; m < average[i].Nmeasure; m++) {
         if (measure[offset + m].photcode == code_c1) {
-          output[i].c1 = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt]);
+          output[i].c1 = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt], MAG_CLASS_PSF);
 	  break;
         }
@@ -98,5 +98,5 @@
       for (m = 0; m < average[i].Nmeasure; m++) {
         if (measure[offset + m].photcode == code_c2) {
-          output[i].c2 = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt]);
+          output[i].c2 = PhotRel (&measure[offset + m], &average[i], &secfilt[i*Nsecfilt], MAG_CLASS_PSF);
 	  break;
         }
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/dvo.h
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/dvo.h	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/dvo.h	(revision 36910)
@@ -690,12 +690,13 @@
 int PhotColor (Average *average, SecFilt *secfilt, Measure *measure, int c1, int c2, double *color);
 
-float PhotInstTiny (MeasureTiny *measure);
-float PhotCatTiny (MeasureTiny *measure);
-float PhotAperTiny (MeasureTiny *measure);
-float PhotSysTiny (MeasureTiny *measure, AverageTiny *average, SecFilt *secfilt);
-float PhotRelTiny (MeasureTiny *measure, AverageTiny *average, SecFilt *secfilt);
-float PhotCalTiny (MeasureTiny *thisone, AverageTiny *average, SecFilt *secfilt, MeasureTiny *measure, PhotCode *code);
-float PhotAveTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt);
-float PhotRefTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt, MeasureTiny *measure);
+float PhotInstTiny (MeasureTiny *measure, dvoMagClassType class);
+float PhotCatTiny (MeasureTiny *measure, dvoMagClassType class);
+float PhotSysTiny (MeasureTiny *measure, AverageTiny *average, SecFilt *secfilt, dvoMagClassType class);
+float PhotRelTiny (MeasureTiny *measure, AverageTiny *average, SecFilt *secfilt, dvoMagClassType class);
+float PhotCalTiny (MeasureTiny *thisone, AverageTiny *average, SecFilt *secfilt, MeasureTiny *measure, PhotCode *code, dvoMagClassType class);
+
+float PhotAveTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source);
+float PhotRefTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt, MeasureTiny *measure, dvoMagClassType class, dvoMagSourceType source);
+
 float PhotXmTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt);
 float PhotdMTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dbExtractMeasures.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dbExtractMeasures.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dbExtractMeasures.c	(revision 36910)
@@ -103,5 +103,5 @@
       PhotCode *myEquiv = GetPhotcodeEquivbyCode (measure[0].photcode);
 
-      // if we request mag:ave, use equiv for photcode
+      // if we request mag:ave, use equiv for photcode (ie a given measure, say GPC1.g.XY01, will return g for mag:ave)
       if  (field->photcode->type == PHOT_MAG) {
 	equiv = myEquiv;
Index: /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_photcode_ops.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_photcode_ops.c	(revision 36910)
@@ -615,4 +615,5 @@
 
 /* color term may not use DEP magnitude */
+// currently only returns the PSF color
 float PhotColorForCode (Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code) {
 
@@ -834,157 +835,277 @@
 
 /******** alternate photometry conversion functions using MeasureTiny and AverageTiny *********/
-float PhotInstTiny (MeasureTiny *measure) {
-
-  int Np;
-  float M;
-
-  Np = photcodes[0].hashcode[measure[0].photcode];
+float PhotInstTiny (MeasureTiny *measure, dvoMagClassType class) {
+
+  int Np = photcodes[0].hashcode[measure[0].photcode];
   if (Np == -1) return (NAN);
-
-  if (photcodes[0].code[Np].type == PHOT_REF) {
-    M = measure[0].M;
-    return (M);
-  }
-
-  M = measure[0].M - measure[0].dt - ZERO_POINT;
-	  
-  return (M);
-
-}
-
-float PhotCatTiny (MeasureTiny *measure) {
-
-  int Np;
-  float Mcat;
-  PhotCode *code;
-
-  Np = photcodes[0].hashcode[measure[0].photcode];
+  PhotCode *code = &photcodes[0].code[Np];
+
+  float Mraw = NAN;
+  switch (class) {
+    case MAG_CLASS_PSF:
+      Mraw = measure[0].M;
+      break;
+    case MAG_CLASS_KRON:
+      // Mraw = measure[0].Mkron;
+      break;
+    case MAG_CLASS_APER:
+      // Mraw = measure[0].Map;
+      break;
+    default:
+      break;
+  }
+  if (code->type == PHOT_REF) {
+    return (Mraw);
+  }
+  float Minst = Mraw - measure[0].dt - ZERO_POINT;
+
+  return (Minst);
+}
+
+float PhotCatTiny (MeasureTiny *measure, dvoMagClassType class) {
+
+  int Np = photcodes[0].hashcode[measure[0].photcode];
   if (Np == -1) return (NAN);
-
-  if (photcodes[0].code[Np].type == PHOT_REF) {
-    Mcat = measure[0].M;
-    return (Mcat);
-  }
-  code = &photcodes[0].code[Np];
-  Mcat = measure[0].M - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C;
+  PhotCode *code = &photcodes[0].code[Np];
+
+  float Mraw = NAN;
+  switch (class) {
+    case MAG_CLASS_PSF:
+      Mraw = measure[0].M;
+      break;
+    case MAG_CLASS_KRON:
+      // Mraw = measure[0].Mkron;
+      break;
+    case MAG_CLASS_APER:
+      // Mraw = measure[0].Map;
+      break;
+    default:
+      break;
+  }
+  if (code->type == PHOT_REF) {
+    return (Mraw);
+  }
+
+  float Mcat = Mraw - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C;
   
   return (Mcat);
 }
 
-# if (0)
-float PhotAperTiny (MeasureTiny *measure) {
-
-  int Np;
-  float Mcat;
-  PhotCode *code;
-
-  Np = photcodes[0].hashcode[measure[0].photcode];
+float PhotSysTiny (MeasureTiny *measure, AverageTiny *average, SecFilt *secfilt, dvoMagClassType class) {
+
+  int Np = photcodes[0].hashcode[measure[0].photcode];
   if (Np == -1) return (NAN);
-
-  if (photcodes[0].code[Np].type == PHOT_REF) {
-    Mcat = measure[0].Map;
-    return (Mcat);
-  }
-  code = &photcodes[0].code[Np];
-  Mcat = measure[0].Map - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C;
-  
-  return (Mcat);
-}
-# endif
-
-float PhotSysTiny (MeasureTiny *measure, AverageTiny *average, SecFilt *secfilt) {
-
-  int i, Np;
-  float Mcat, Mcol, Msys, mc, Mc;
-  PhotCode *code;
-
-  Np = photcodes[0].hashcode[measure[0].photcode];
-  if (Np == -1) return (NAN);
-
-  if (photcodes[0].code[Np].type == PHOT_REF) {
-    Msys = measure[0].M;
-    return (Msys);
-  }
-  code = &photcodes[0].code[Np];
-  Mcat = measure[0].M - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C;
+  PhotCode *code = &photcodes[0].code[Np];
+
+  float Mraw = NAN;
+  switch (class) {
+    case MAG_CLASS_PSF:
+      Mraw = measure[0].M;
+      break;
+    case MAG_CLASS_KRON:
+      // Mraw = measure[0].Mkron;
+      break;
+    case MAG_CLASS_APER:
+      // Mraw = measure[0].Map;
+      break;
+    default:
+      break;
+  }
+  if (code->type == PHOT_REF) {
+    return (Mraw);
+  }
+  float Mcat = Mraw - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C;
 
   /* for DEP, color must be made of PRI/SEC */
-  mc = PhotColorForCodeTiny (average, secfilt, NULL, code);
+  float mc = PhotColorForCodeTiny (average, secfilt, NULL, code);
   if (isnan(mc)) return (Mcat);
-  mc = mc - SCALE*code[0].dX;
-
-  Mc = mc;
-  Mcol = 0;
+  mc -= SCALE*code[0].dX;
+
+  int i = 0;
+  double Mc = mc;
+  float Mcol = 0;
   for (i = 0; i < code[0].Nc; i++) {
     Mcol += code[0].X[i]*Mc;
     Mc *= mc;
   }
-  Msys = Mcat + Mcol;
+  float Msys = Mcat + Mcol;
   return (Msys);
 }
 
-float PhotRelTiny (MeasureTiny *measure, AverageTiny *average, SecFilt *secfilt) {
-
-  int i, Np;
-  float Mcat, Mcol, Mrel, mc, Mc;
-  PhotCode *code;
-
-  Np = photcodes[0].hashcode[measure[0].photcode];
+float PhotRelTiny (MeasureTiny *measure, AverageTiny *average, SecFilt *secfilt, dvoMagClassType class) {
+
+  int Np = photcodes[0].hashcode[measure[0].photcode];
   if (Np == -1) return (NAN);
-
-  if (photcodes[0].code[Np].type == PHOT_REF) {
-    Mcat = measure[0].M;
-    return (Mcat);
-  }
-  code = &photcodes[0].code[Np];
-  Mrel = measure[0].M - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C - measure[0].Mcal;
+  PhotCode *code = &photcodes[0].code[Np];
+
+  float Mraw = NAN;
+  switch (class) {
+    case MAG_CLASS_PSF:
+      Mraw = measure[0].M;
+      break;
+    case MAG_CLASS_KRON:
+      // Mraw = measure[0].Mkron;
+      break;
+    case MAG_CLASS_APER:
+      // Mraw = measure[0].Map;
+      break;
+    default:
+      break;
+  }
+  if (code->type == PHOT_REF) {
+    return (Mraw);
+  }
+  float Mcat = Mraw - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C - measure[0].Mcal;
 
   /* for DEP, color must be made of PRI/SEC */
-  mc = PhotColorForCodeTiny (average, secfilt, NULL, code);
-  if (isnan(mc)) return (Mrel);
-  mc = mc - SCALE*code[0].dX;
-
-  Mc = mc;
-  Mcol = 0;
+  float mc = PhotColorForCodeTiny (average, secfilt, NULL, code);
+  if (isnan(mc)) return (Mcat);
+  mc -= SCALE*code[0].dX;
+
+  double Mc = mc;
+  float Mcol = 0;
+  int i = 0;
+  for (i = 0; i < code[0].Nc; i++) {
+    Mcol += code[0].X[i]*Mc;
+    Mc *= mc;
+  }
+  float Mrel = Mcat + Mcol;
+  return (Mrel);
+}
+
+/* return calibrated magnitude from measure for given photcode */
+float PhotCalTiny (MeasureTiny *thisone, AverageTiny *average, SecFilt *secfilt, MeasureTiny *measure, PhotCode *code, dvoMagClassType class) {
+
+  int i; 
+
+  if (code == NULL) return NAN;
+
+  /* code must be the matching PRI/SEC code for this measurement or an equivalent ALT */
+  int Np = photcodes[0].hashcode[thisone[0].photcode];
+  if (Np == -1) return (NAN);
+  PhotCode *myCode = &photcodes[0].code[Np];
+
+  if (code->code != myCode->equiv) return (NAN);
+
+  // if we are REF type, just get the right version and return
+  if (myCode->type == PHOT_REF) {
+    float Mraw = NAN;
+    switch (class) {
+      case MAG_CLASS_PSF:
+	Mraw = thisone[0].M;
+	break;
+      case MAG_CLASS_KRON:
+	// Mraw = thisone[0].Mkron;
+	break;
+      case MAG_CLASS_APER:
+	// Mraw = thisone[0].Map;
+	break;
+      default:
+	break;
+    }
+    return (Mraw);
+  }
+
+  float Mcal = PhotRelTiny (thisone, average, secfilt, class) + SCALE*code[0].C;
+
+  float mc = PhotColorForCodeTiny (average, secfilt, measure, code);
+  if (isnan(mc)) return (Mcal);
+  mc -= SCALE*code[0].dX;
+
+  double Mc = mc;
+  float Mcol = 0;
+  for (i = 0; i < code[0].Nc; i++) {
+    Mcol += code[0].X[i]*Mc;
+    Mc *= mc;
+  }
+  Mcal += Mcol;
+  return (Mcal);
+}
+
+/***/
+float PhotAveTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source) {
+
+  if (code == NULL) return NAN;
+
+  int Ns = photcodes[0].hashNsec[code[0].code];
+  if (Ns == -1) return (NAN);
+
+  float Mave = NAN;
+  switch (source) {
+    case MAG_SRC_CHP:
+      switch (class) {
+	case MAG_CLASS_PSF:
+	  Mave = secfilt[Ns].M;
+	  break;
+	case MAG_CLASS_KRON:
+	  Mave = secfilt[Ns].Mkron;
+	  break;
+	case MAG_CLASS_APER:
+	  Mave = secfilt[Ns].Map;
+	  break;
+	default:
+	  break;
+      }
+      break;
+    case MAG_SRC_WRP:
+      switch (class) {
+	case MAG_CLASS_PSF:
+	  Mave = secfilt[Ns].MpsfWrp;
+	  break;
+	case MAG_CLASS_KRON:
+	  Mave = secfilt[Ns].MkronWrp;
+	  break;
+	case MAG_CLASS_APER:
+	  Mave = secfilt[Ns].MapWrp;
+	  break;
+	default:
+	  break;
+      }
+      break;
+    case MAG_SRC_STK:
+      switch (class) {
+	case MAG_CLASS_PSF:
+	  Mave = secfilt[Ns].MpsfStk;
+	  break;
+	case MAG_CLASS_KRON:
+	  Mave = secfilt[Ns].MkronStk;
+	  break;
+	case MAG_CLASS_APER:
+	  Mave = secfilt[Ns].MapStk;
+	  break;
+	default:
+	  break;
+      }
+      break;
+    default:
+      break;
+  }
+  return (Mave);
+}
+
+/* return calibrated magnitude from average/secfilt for given photcode */
+float PhotRefTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt, MeasureTiny *measure, dvoMagClassType class, dvoMagSourceType source) {
+
+  int i;
+
+  float Mave = PhotAveTiny (code, average, secfilt, class, source);
+  if (isnan(Mave)) return NAN;
+
+  // correct for relative zero-point
+  float Mref = Mave + SCALE*code[0].C;
+
+  float mc = PhotColorForCodeTiny (average, secfilt, measure, code);
+  if (isnan(mc)) return (Mref);
+  mc -= SCALE*code[0].dX;
+
+  // correct for color terms
+  double Mc = mc;
+  float Mcol = 0;
   for (i = 0; i < code[0].Nc; i++) {
     Mcol += code[0].X[i]*Mc;
     Mc *= mc;    /* the 0.001 is needed for higher order terms to keep the units mag = mag^n */
   }
-  Mrel += Mcol;
-  return (Mrel);
-}
-
-/* return calibrated magnitude from measure for given photcode */
-float PhotCalTiny (MeasureTiny *thisone, AverageTiny *average, SecFilt *secfilt, MeasureTiny *measure, PhotCode *code) {
-
-  int i, Np; 
-  float Mcal, Mrel, Mcol, mc, Mc;
-
-  if (code == NULL) return NAN;
-
-  /* code must be the matching PRI/SEC code for this measurement or an equivalent ALT */
-  Np = photcodes[0].hashcode[thisone[0].photcode];
-  if (Np == -1) return (NAN);
-
-  if (photcodes[0].code[Np].type == PHOT_REF) {
-    Mrel = thisone[0].M;
-    return (Mrel);
-  }
-  if (code[0].code != photcodes[0].code[Np].equiv) return (NAN);
-
-  Mcal = PhotRelTiny (thisone, average, secfilt) + SCALE*code[0].C;
-
-  mc = PhotColorForCodeTiny (average, secfilt, measure, code);
-  if (isnan(mc)) return (Mcal);
-  mc = mc - SCALE*code[0].dX;
-
-  Mc = mc;
-  Mcol = 0;
-  for (i = 0; i < code[0].Nc; i++) {
-    Mcol += code[0].X[i]*Mc;
-    Mc *= mc;
-  }
-  Mcal += Mcol;
-  return (Mcal);
+  Mref += Mcol;
+  return (Mref);
 }
 
@@ -1037,44 +1158,4 @@
   mc = (isnan(m1) || isnan(m2)) ? NAN : (m1 - m2);
   return (mc);
-}
-
-/* return calibrated magnitude from average/secfilt for given photcode */
-float PhotRefTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt, MeasureTiny *measure) {
-
-  int i, Ns;
-  float Mave, Mref, Mcol, mc;
-  double Mc;
-
-  if (code == NULL) return NAN;
-
-  Ns = photcodes[0].hashNsec[code[0].code];
-  Mave = (Ns == -1) ? NAN : secfilt[Ns].M;
-  Mref = Mave + SCALE*code[0].C;
-
-  mc = PhotColorForCodeTiny (average, secfilt, measure, code);
-  if (isnan(mc)) return (Mref);
-  mc = mc - SCALE*code[0].dX;
-
-  Mc = mc;
-  Mcol = 0;
-  for (i = 0; i < code[0].Nc; i++) {
-    Mcol += code[0].X[i]*Mc;
-    Mc *= mc;    /* the 0.001 is needed for higher order terms to keep the units mag = mag^n */
-  }
-  Mref += Mcol;
-  return (Mref);
-}
-
-/***/
-float PhotAveTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt) {
-
-  int Ns;
-  float Mave;
-
-  if (code == NULL) return NAN;
-
-  Ns = photcodes[0].hashNsec[code[0].code];
-  Mave = (Ns == -1) ? NAN : secfilt[Ns].M;
-  return (Mave);
 }
 
Index: /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/Makefile
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/Makefile	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/Makefile	(revision 36910)
@@ -25,6 +25,19 @@
 $(SRC)/dvo_host_utils.$(ARCH).o		\
 $(SRC)/region_list.$(ARCH).o		\
-$(SRC)/find_matches.$(ARCH).o           \
-$(SRC)/photometry.$(ARCH).o             
+$(SRC)/photcode_ops.$(ARCH).o	  	\
+$(SRC)/find_matches.$(ARCH).o           
+
+# $(SRC)/photometry.$(ARCH).o             
+
+broken = \
+$(SRC)/calextract.$(ARCH).o      	\
+$(SRC)/calmextract.$(ARCH).o     	\
+$(SRC)/ccd.$(ARCH).o             	\
+$(SRC)/cmd.$(ARCH).o             	\
+$(SRC)/dmagaves.$(ARCH).o	  	\
+$(SRC)/dmagmeas.$(ARCH).o	  	\
+$(SRC)/dmags.$(ARCH).o		  	\
+$(SRC)/ddmags.$(ARCH).o	  	\
+$(SRC)/fitcolors.$(ARCH).o
 
 cmds = \
@@ -32,22 +45,13 @@
 $(SRC)/avmatch.$(ARCH).o	  	\
 $(SRC)/badimages.$(ARCH).o	  	\
-$(SRC)/calextract.$(ARCH).o      	\
-$(SRC)/calmextract.$(ARCH).o     	\
 $(SRC)/catdir.$(ARCH).o             	\
-$(SRC)/ccd.$(ARCH).o             	\
 $(SRC)/cmatch.$(ARCH).o	  	\
-$(SRC)/cmd.$(ARCH).o             	\
 $(SRC)/cmpload.$(ARCH).o	  	\
 $(SRC)/cmpread.$(ARCH).o	  	\
 $(SRC)/coordimage.$(ARCH).o	  	\
 $(SRC)/coordmosaic.$(ARCH).o	  	\
-$(SRC)/ddmags.$(ARCH).o	  	\
 $(SRC)/detrend.$(ARCH).o	  	\
-$(SRC)/dmagaves.$(ARCH).o	  	\
-$(SRC)/dmagmeas.$(ARCH).o	  	\
-$(SRC)/dmags.$(ARCH).o		  	\
 $(SRC)/dmt.$(ARCH).o		  	\
 $(SRC)/elixir.$(ARCH).o                \
-$(SRC)/fitcolors.$(ARCH).o             \
 $(SRC)/fitsed.$(ARCH).o                \
 $(SRC)/gcat.$(ARCH).o		  	\
Index: /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/avextract.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/avextract.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/avextract.c	(revision 36910)
@@ -166,6 +166,5 @@
   needMeasures = FALSE;
   for (i = 0; !needMeasures && (i < Nfields); i++) {
-    if (fields[i].magMode == MAG_NONE) continue;
-    if (fields[i].photcode == NULL) continue; // assert this?
+    if (fields[i].photcode == NULL) continue; // non-measure fields do not have a photcode
     if (fields[i].photcode[0].type == PHOT_REF) needMeasures = TRUE;
     if (fields[i].photcode[0].type == PHOT_DEP) needMeasures = TRUE;
Index: /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/avmatch.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/avmatch.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/avmatch.c	(revision 36910)
@@ -152,5 +152,4 @@
   int needMeasures = FALSE;
   for (i = 0; !needMeasures && (i < Nfields); i++) {
-    if (fields[i].magMode == MAG_NONE) continue;
     if (fields[i].photcode == NULL) continue; // assert this?
     if (fields[i].photcode[0].type == PHOT_REF) needMeasures = TRUE;
Index: /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/fitsed.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/fitsed.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/fitsed.c	(revision 36910)
@@ -83,5 +83,5 @@
   /* interpret command-line options */
   if ((selection = SetRegionSelection (&argc, argv)) == NULL) goto escape;
-  if (!SetPhotSelections (&argc, argv, 4)) goto usage;
+  // if (!SetPhotSelections (&argc, argv, 4)) goto usage;
 
   PLOT = FALSE;
Index: /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/gstar.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/gstar.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/gstar.c	(revision 36910)
@@ -374,9 +374,9 @@
 	  int Nv = index[j];
 
-	  Mcat = PhotCat (&catalog.measure[Nv]);
+	  Mcat = PhotCat (&catalog.measure[Nv], MAG_CLASS_PSF);
 	  if (INST) {
-	    Mrel = PhotInst (&catalog.measure[Nv]);
+	    Mrel = PhotInst (&catalog.measure[Nv], MAG_CLASS_PSF);
 	  } else {
-	    Mrel = PhotRel (&catalog.measure[Nv], &catalog.average[k], &catalog.secfilt[k*Nsecfilt]);
+	    Mrel = PhotRel (&catalog.measure[Nv], &catalog.average[k], &catalog.secfilt[k*Nsecfilt], MAG_CLASS_PSF);
 	  }
 
Index: /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/init.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/init.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/init.c	(revision 36910)
@@ -66,10 +66,10 @@
   {1, "avmatch",     avmatch,      "extract average data values matched to RA,DEC points"},
   {1, "badimages",   badimages,    "look for images with anomalous astrometry"},
-  {1, "calextract",  calextract,   "extract photometry calibration"},
-  {1, "calmextract", calmextract,  "extract photometry calibration"},
+//  {1, "calextract",  calextract,   "extract photometry calibration"},
+//  {1, "calmextract", calmextract,  "extract photometry calibration"},
   {1, "catdir",      catdir_define,"re-define CATDIR"},
-  {1, "ccd",         ccd,          "plot color-color diagram"},
+//  {1, "ccd",         ccd,          "plot color-color diagram"},
   {1, "cmatch",      cmatch,       "match two catalogs"},
-  {1, "cmd",         cmd,          "plot cmd of stars in current region"},
+//  {1, "cmd",         cmd,          "plot cmd of stars in current region"},
   {1, "cmpload",     cmpload,      "load cmp file into ?"},
   {1, "cmpread",     cmpread,      "read data from cmp format files"},
@@ -77,12 +77,12 @@
   {1, "coordmosaic", coordmosaic,  "generate a map of the distortion"},
   {1, "psastro_model", psastro_model, "save psastro-format astrometry model"},
-  {1, "ddmags",      ddmags,       "plot magnitude differences"},
+//  {1, "ddmags",      ddmags,       "plot magnitude differences"},
   {1, "detrend",     detrend,      "extract from detrend database?"},
-  {1, "dmagaves",    dmagaves,     "foo"},
-  {1, "dmagmeas",    dmagmeas,     "foo"},
-  {1, "dmags",       dmags,        "plot differential magnitudes between filters"},
+//  {1, "dmagaves",    dmagaves,     "foo"},
+//  {1, "dmagmeas",    dmagmeas,     "foo"},
+//  {1, "dmags",       dmags,        "plot differential magnitudes between filters"},
   {1, "dmt",         dmt,          "plot mag scatter"},
   {1, "elixir",      elixir,       "talk to elixir"},
-  {1, "fitcolors",   fitcolors,    "fit chip-to-chip color terms"},
+//  {1, "fitcolors",   fitcolors,    "fit chip-to-chip color terms"},
   {1, "fitsed",      fitsed,       "fit stellar SEDs to objects"},
   {1, "gcat",        gcat,         "get catalog at location"},
Index: /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/lcurve.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/lcurve.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/lcurve.c	(revision 36910)
@@ -129,5 +129,5 @@
 	if (ErrorBars) dYvec.elements.Flt[N] = catalog.measure[m].dM;
 	Xvec.elements.Flt[N] = TimeValue (catalog.measure[m].t, TimeReference, TimeFormat);
-	Yvec.elements.Flt[N] = PhotCat (&catalog.measure[m]);
+	Yvec.elements.Flt[N] = PhotCat (&catalog.measure[m], MAG_CLASS_PSF);
 	/**** need to use PhotRel optionally here ****/
 	N++; 
Index: /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/lightcurve.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/lightcurve.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/lightcurve.c	(revision 36910)
@@ -121,7 +121,7 @@
 	dmvec[0].elements.Flt[N] = catalog.measure[m].dM;
 	if (RELPHOT) {
-	  mvec[0].elements.Flt[N] = PhotCat (&catalog.measure[m]);
+	  mvec[0].elements.Flt[N] = PhotCat (&catalog.measure[m], MAG_CLASS_PSF);
 	} else {
-	  mvec[0].elements.Flt[N] = PhotRel (&catalog.measure[m], &catalog.average[k], &catalog.secfilt[k*Nsecfilt]);
+	  mvec[0].elements.Flt[N] = PhotRel (&catalog.measure[m], &catalog.average[k], &catalog.secfilt[k*Nsecfilt], MAG_CLASS_PSF);
 	}
 	N++; 
Index: /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/photcode_ops.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/photcode_ops.c	(revision 36910)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/photcode_ops.c	(revision 36910)
@@ -0,0 +1,35 @@
+# include "dvoshell.h"
+
+/* (re)load photcodes from photcode table */
+int InitPhotcodes () {
+
+  double ZERO_POINT;
+  char MasterPhotcodeFile[256];
+  char CatdirPhotcodeFile[256];
+  char *catdir;
+
+  if (VarConfig ("ZERO_PT", "%lf", &ZERO_POINT) == (char *) NULL) {
+    gprint (GP_ERR, "ZERO_PT undefined in config\n");
+    return (FALSE);
+  }
+  SetZeroPoint (ZERO_POINT);
+
+  catdir = GetCATDIR();
+  if (catdir == NULL) {
+    CatdirPhotcodeFile[0] = 0;
+  } else {
+    sprintf (CatdirPhotcodeFile, "%s/Photcodes.dat", catdir);
+  }
+
+  if (VarConfig ("PHOTCODE_FILE", "%s", MasterPhotcodeFile) == (char *) NULL) {
+    gprint (GP_ERR, "PHOTCODE_FILE undefined in config\n");
+    return (FALSE);
+  }
+
+  // XXX now that DVO does not allow write access, we can drop the MasterPhotcodeFile
+  if (!LoadPhotcodes (CatdirPhotcodeFile, MasterPhotcodeFile, FALSE)) {
+    gprint (GP_ERR, "error loading photcode table %s or master file %s\n", CatdirPhotcodeFile, MasterPhotcodeFile);
+    return (FALSE);
+  }
+  return (TRUE);
+}
Index: /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/photometry.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/photometry.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/photometry.c	(revision 36910)
@@ -41,4 +41,5 @@
   }
 
+# if (0)
 /* selection criteria */
 /* selections based on Measure quantities */
@@ -78,5 +79,7 @@
 static time_t TimeReference;
 static int TimeFormat;
-
+# endif
+
+# if (0)
 int GetTimeSelection (time_t *tz, time_t *te) {
   *tz = tzero;
@@ -298,39 +301,7 @@
   return;
 }
-
-/* (re)load photcodes from photcode table */
-int InitPhotcodes () {
-
-  double ZERO_POINT;
-  char MasterPhotcodeFile[256];
-  char CatdirPhotcodeFile[256];
-  char *catdir;
-
-  if (VarConfig ("ZERO_PT", "%lf", &ZERO_POINT) == (char *) NULL) {
-    gprint (GP_ERR, "ZERO_PT undefined in config\n");
-    return (FALSE);
-  }
-  SetZeroPoint (ZERO_POINT);
-
-  catdir = GetCATDIR();
-  if (catdir == NULL) {
-    CatdirPhotcodeFile[0] = 0;
-  } else {
-    sprintf (CatdirPhotcodeFile, "%s/Photcodes.dat", catdir);
-  }
-
-  if (VarConfig ("PHOTCODE_FILE", "%s", MasterPhotcodeFile) == (char *) NULL) {
-    gprint (GP_ERR, "PHOTCODE_FILE undefined in config\n");
-    return (FALSE);
-  }
-
-  // XXX now that DVO does not allow write access, we can drop the MasterPhotcodeFile
-  if (!LoadPhotcodes (CatdirPhotcodeFile, MasterPhotcodeFile, FALSE)) {
-    gprint (GP_ERR, "error loading photcode table %s or master file %s\n", CatdirPhotcodeFile, MasterPhotcodeFile);
-    return (FALSE);
-  }
-  return (TRUE);
-}
-
+# endif
+
+# if (0)
 int ListPhotSelections () {
 
@@ -1121,5 +1092,7 @@
   return (list);
 }
-
+# endif
+
+# if (0)
 double GetMeasure (int param, Average *average, Measure *measure, double mag) {
 
@@ -1214,4 +1187,5 @@
   return (value);
 }
+# endif
 
 /** the mosaic entries do not use the registered mosaic found 
Index: /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/pmeasure.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/pmeasure.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/pmeasure.c	(revision 36910)
@@ -203,5 +203,5 @@
 	if (TimeSelect && (catalog.measure[m+k].t > tzero + trange)) continue;
 	if ((PhotcodeClip != -1) && (catalog.measure[m+k].photcode != PhotcodeClip)) continue;
-	mag = PhotCat (&catalog.measure[m+k]);
+	mag = PhotCat (&catalog.measure[m+k], MAG_CLASS_PSF);
 	Zvec[Npts] = MIN (1.0, MAX (0.01, (mag - Mz) / Mr));
 	if (LimExclude && (Zvec[Npts] > 0.99)) continue;
Index: /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/subpix.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/subpix.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/opihi/dvo/subpix.c	(revision 36910)
@@ -138,5 +138,5 @@
     for (j = 0; j < Nmeasure; j++) {
       if (measure[j].t == Timage) { 
-	Mabs = PhotCat (&measure[j]);
+	Mabs = PhotCat (&measure[j], MAG_CLASS_PSF);
 	RD_to_XY (&X, &Y, Ra, Dec, &image[I].coords);
 	t = TimeValue (measure[j].t, TimeReference, TimeFormat);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/opihi/include/dvoshell.h
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/opihi/include/dvoshell.h	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/opihi/include/dvoshell.h	(revision 36910)
@@ -90,13 +90,4 @@
 int           wordhash              PROTO((char *word));
 
-int          GetMagMode             PROTO((char *string));
-PhotCode    *ParsePhotcodeField     PROTO((char *field, int *mode, int def));
-int          ParseMeasureField      PROTO((dbField *field, char *fieldName));
-int          ParseAverageField      PROTO((dbField *field, char *fieldName));
-int          ParseImageField        PROTO((dbField *field, char *fieldName));
-
-dbValue      dbExtractMeasures      PROTO((Average *average, SecFilt *secfilt, Measure *measure, dbField *field));
-dbValue      dbExtractImages        PROTO((Image *image, off_t Nimage, off_t N, dbField *field));
-
 int          HostTableLaunchJobs    PROTO((SkyList *sky, HostTable *table, char *basecmd, char *options, int VERBOSE));
 int          HostTableParallelOps   PROTO((SkyList *sky, int argc, char **argv, char *ResultFile, int ReadVectors, int Nelements, int VERBOSE));
Index: /branches/eam_branches/ipp-20140610/Ohana/src/photdbc/src/make_subcatalog.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/photdbc/src/make_subcatalog.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/photdbc/src/make_subcatalog.c	(revision 36910)
@@ -123,5 +123,5 @@
       // select measurements by mag limit -- drop exactly this measurement  
       if (ExcludeByInstMag) {
-	mag = PhotInst (&catalog[0].measure[offset]);
+	mag = PhotInst (&catalog[0].measure[offset], MAG_CLASS_PSF);
 	if (mag < INST_MAG_MIN) continue;
 	if (mag > INST_MAG_MAX) continue;
@@ -135,5 +135,5 @@
       // check measurements for this object -- drop object if no measurements pass
       if (ExcludeByMaxMinMag) {
-	mag = PhotSys (&catalog[0].measure[offset], &catalog[0].average[i], &catalog[0].secfilt[i*Nsecfilt]);
+	mag = PhotSys (&catalog[0].measure[offset], &catalog[0].average[i], &catalog[0].secfilt[i*Nsecfilt], MAG_CLASS_PSF);
 	minMag = MIN (minMag, mag);
       }
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/ImageOps.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/ImageOps.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relastro/src/ImageOps.c	(revision 36910)
@@ -1120,5 +1120,5 @@
   /* select measurements by mag limit */
   if (ImagSelect) {
-    mag = PhotInstTiny (measure);
+    mag = PhotInstTiny (measure, MAG_CLASS_PSF);
     if (mag < ImagMin || mag > ImagMax) return FALSE;
   }
@@ -1187,5 +1187,5 @@
   /* select measurements by mag limit */
   if (ImagSelect) {
-    mag = PhotInst (measure);
+    mag = PhotInst (measure, MAG_CLASS_PSF);
     if (mag < ImagMin || mag > ImagMax) return FALSE;
   }
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/GridOps.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/GridOps.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/GridOps.c	(revision 36910)
@@ -414,5 +414,5 @@
 	// select the color- and airmass-corrected observed magnitude for this star
 	// XXX need to be able to turn off the color-correction until initial average mags are found
-	Msys = PhotCatTiny (&catalog[c].measureT[m]);
+	Msys = PhotCatTiny (&catalog[c].measureT[m], MAG_CLASS_PSF);
 	if (isnan(Msys)) {
 	  Nsys++;
@@ -573,5 +573,5 @@
       
       n = catalog[c].measureT[m].averef;
-      Msys = PhotSysTiny (&catalog[c].measureT[m], &catalog[c].averageT[n], &catalog[c].secfilt[n*Nsecfilt]);
+      Msys = PhotSysTiny (&catalog[c].measureT[m], &catalog[c].averageT[n], &catalog[c].secfilt[n*Nsecfilt], MAG_CLASS_PSF);
       if (isnan(Msys)) {
 	Nsys++;
@@ -651,5 +651,5 @@
 
       n = catalog[c].measureT[m].averef;
-      Msys = PhotSysTiny (&catalog[c].measureT[m], &catalog[c].averageT[n], &catalog[c].secfilt[n*Nsecfilt]);
+      Msys = PhotSysTiny (&catalog[c].measureT[m], &catalog[c].averageT[n], &catalog[c].secfilt[n*Nsecfilt], MAG_CLASS_PSF);
 
       xlist[N] = Xmeas[c][m];
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/ImageOps.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/ImageOps.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/ImageOps.c	(revision 36910)
@@ -608,5 +608,5 @@
 
       n = catalog[c].measureT[m].averef;
-      Msys = PhotSysTiny (&catalog[c].measureT[m], &catalog[c].averageT[n], &catalog[c].secfilt[n*Nsecfilt]);
+      Msys = PhotSysTiny (&catalog[c].measureT[m], &catalog[c].averageT[n], &catalog[c].secfilt[n*Nsecfilt], MAG_CLASS_PSF);
       if (isnan(Msys)) {
 	Nsys++;
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/MosaicOps.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/MosaicOps.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/MosaicOps.c	(revision 36910)
@@ -1127,5 +1127,5 @@
 
       off_t n = catalog[c].measureT[m].averef;
-      Msys = PhotSysTiny (&catalog[c].measureT[m], &catalog[c].averageT[n], &catalog[c].secfilt[n*Nsecfilt]);
+      Msys = PhotSysTiny (&catalog[c].measureT[m], &catalog[c].averageT[n], &catalog[c].secfilt[n*Nsecfilt], MAG_CLASS_PSF);
 
       float delta = Msys - Mrel - Mcal - Mgrid + Mflat;
@@ -1164,5 +1164,5 @@
 
     off_t n = catalog[c].measureT[m].averef;
-    Msys = PhotSysTiny (&catalog[c].measureT[m], &catalog[c].averageT[n], &catalog[c].secfilt[n*Nsecfilt]);
+    Msys = PhotSysTiny (&catalog[c].measureT[m], &catalog[c].averageT[n], &catalog[c].secfilt[n*Nsecfilt], MAG_CLASS_PSF);
     if (isnan(Msys)) {
       info->Nsys++;
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/StarOps.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/StarOps.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/StarOps.c	(revision 36910)
@@ -467,5 +467,5 @@
 
 	// skip some absurd values NAN, < 0.0, > 30.0
-	Msys = PhotSysTiny (&catalog[Nc].measureT[m], &catalog[Nc].averageT[j], &catalog[Nc].secfilt[j*Nsecfilt]);
+	Msys = PhotSysTiny (&catalog[Nc].measureT[m], &catalog[Nc].averageT[j], &catalog[Nc].secfilt[j*Nsecfilt], MAG_CLASS_PSF);
 	if (isnan(Msys)) SKIP_THIS_MEAS(Nsys);
 	if (Msys <  0.0) SKIP_THIS_MEAS(Nsys);
@@ -1093,5 +1093,5 @@
 	  if (isnan(Mgrid)) { Ngrid ++; continue; }
 
-	  Msys = PhotSysTiny (&catalog[i].measureT[m], &catalog[i].averageT[j], &catalog[i].secfilt[j*Nsecfilt]);
+	  Msys = PhotSysTiny (&catalog[i].measureT[m], &catalog[i].averageT[j], &catalog[i].secfilt[j*Nsecfilt], MAG_CLASS_PSF);
 	  list[N] = Msys - Mcal - Mmos - Mgrid;
 	  dlist[N] = MAX (catalog[i].measureT[m].dM, MIN_ERROR);
@@ -1138,5 +1138,5 @@
 	  if (isnan(Mgrid)) continue;
 
-	  Msys = PhotSysTiny (&catalog[i].measureT[m], &catalog[i].averageT[j], &catalog[i].secfilt[j*Nsecfilt]);
+	  Msys = PhotSysTiny (&catalog[i].measureT[m], &catalog[i].averageT[j], &catalog[i].secfilt[j*Nsecfilt], MAG_CLASS_PSF);
 	  list[N] = Msys - Mcal - Mmos - Mgrid;
 	  dlist[N] = MAX (catalog[i].measureT[m].dM, MIN_ERROR);
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/bcatalog.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/bcatalog.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/bcatalog.c	(revision 36910)
@@ -143,5 +143,5 @@
 
       /* select measurements by mag limit */
-      mag = PhotCat (&catalog[0].measure[offset]);
+      mag = PhotCat (&catalog[0].measure[offset], MAG_CLASS_PSF);
       if (mag > MAG_LIM) { Nmag ++; continue; } 
 
@@ -151,5 +151,5 @@
       /* select measurements by mag limit */
       if (ImagSelect) {
-	mag = PhotInst (&catalog[0].measure[offset]);
+	mag = PhotInst (&catalog[0].measure[offset], MAG_CLASS_PSF);
 	if (mag < ImagMin) { Nimag ++; continue; }
 	if (mag > ImagMax) { Nimag ++; continue; }
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/plot_scatter.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/plot_scatter.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/plot_scatter.c	(revision 36910)
@@ -51,6 +51,6 @@
 
 		xlist[N] = Mrel;
-		ylist[N] = PhotSysTiny (&catalog[i].measureT[m], &catalog[i].averageT[j], &catalog[i].secfilt[j*Nsecfilt]) - Mcal - Mmos - Mgrid - Mrel;
-		ilist[N] = PhotInstTiny (&catalog[i].measureT[m]);
+		ylist[N] = PhotSysTiny (&catalog[i].measureT[m], &catalog[i].averageT[j], &catalog[i].secfilt[j*Nsecfilt], MAG_CLASS_PSF) - Mcal - Mmos - Mgrid - Mrel;
+		ilist[N] = PhotInstTiny (&catalog[i].measureT[m], MAG_CLASS_PSF);
 		N++;
 	    }
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/setMrelCatalog.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/setMrelCatalog.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/setMrelCatalog.c	(revision 36910)
@@ -166,5 +166,5 @@
 
       // skip some absurd values NAN, < 0.0, > 30.0
-      Msys = PhotSysTiny (&measureT[k], &averageT[0], &secfilt[0]);
+      Msys = PhotSysTiny (&measureT[k], &averageT[0], &secfilt[0], MAG_CLASS_PSF);
       if (isnan(Msys)) SKIP_THIS_MEAS(Nsys);
       if (Msys <  0.0) SKIP_THIS_MEAS(Nsys);
@@ -255,5 +255,5 @@
 
 	// Map (Maplist) and Mkron (Mkronlist,dkronlist) are used to calculate mean mags per filter
-	float Map = PhotAperCat (&measure[k]);
+	float Map = PhotCat (&measure[k], MAG_CLASS_APER);
 	if (!isnan(Map)) {
 	    Maplist[Nap] = Map - Mcal - Mmos - Mgrid;
@@ -263,5 +263,5 @@
 	}
 
-	float Mkron = PhotKronCat (&measure[k]);
+	float Mkron = PhotCat (&measure[k], MAG_CLASS_KRON);
 	if (!isnan(Mkron)) {
 	  Mkronlist[Nkron] = Mkron - Mcal - Mmos - Mgrid;
@@ -493,5 +493,5 @@
       if (isnan(Mgrid)) SKIP_THIS_MEAS_STACK(Ngrid);
 
-      Msys = PhotSys (&measure[k], &average[0], &secfilt[0]);
+      Msys = PhotSys (&measure[k], &average[0], &secfilt[0], MAG_CLASS_PSF);
       if (isnan(Msys)) SKIP_THIS_MEAS_STACK(Nsys);
 
Index: /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/setMrelFinal.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/setMrelFinal.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/relphot/src/setMrelFinal.c	(revision 36910)
@@ -229,5 +229,5 @@
 	if ((pass < 4) && ImagSelect) {
 	  if (Nim > -1) {
-	    mag = PhotInst (&catalog[0].measure[m]);
+	    mag = PhotInst (&catalog[0].measure[m], MAG_CLASS_PSF);
 	    if (mag < ImagMin) goto skip;
 	    if (mag > ImagMax) goto skip;
Index: /branches/eam_branches/ipp-20140610/Ohana/src/uniphot/src/update_catalog_setastrom.c
===================================================================
--- /branches/eam_branches/ipp-20140610/Ohana/src/uniphot/src/update_catalog_setastrom.c	(revision 36909)
+++ /branches/eam_branches/ipp-20140610/Ohana/src/uniphot/src/update_catalog_setastrom.c	(revision 36910)
@@ -76,5 +76,5 @@
     // correction may be Minst or Minst + 5.0*log(fwhm
     float fwhm_maj = FromShortPixels(measure[0].FWx);
-    float Minst = PhotInst (measure);
+    float Minst = PhotInst (measure, MAG_CLASS_PSF);
     float MinstSB = Minst + 5.0*log10(fwhm_maj);
 
