Index: /branches/eam_branches/ipp-20111122/psastro/src/psastroLoadRefstars.c
===================================================================
--- /branches/eam_branches/ipp-20111122/psastro/src/psastroLoadRefstars.c	(revision 33632)
+++ /branches/eam_branches/ipp-20111122/psastro/src/psastroLoadRefstars.c	(revision 33633)
@@ -185,5 +185,8 @@
 	// apply a color correction
 	// XXX this is very GPC1 specific and hard-wired -- be very afraid!
-	if (!strcmp(photcode, "w")) {
+	// select the filter; default to fixed photcode and mag limit otherwise
+	pmFPAfile *input = psMetadataLookupPtr (NULL, config->files, source); // we've already done this before
+	char *filter = psMetadataLookupStr (&status, input->fpa->concepts, "FPA.FILTERID");
+	if (!strcmp(filter, "w")) {
 	    for (int i = 0; i < refstars->n; i++) {
 		pmAstromObj *ref = refstars->data[i];
@@ -191,5 +194,5 @@
 		float ri = ref->Color;
 		// saturate at some valid range limits
-		ri = PS_MAX (PS_MIN(r, 2.0), -0.2);
+		ri = PS_MAX (PS_MIN(ri, 2.0), -0.2);
 		float w = NAN;
 		if (ri < 0.5) {
Index: /branches/eam_branches/ipp-20111122/psastro/src/psastroZeroPoint.c
===================================================================
--- /branches/eam_branches/ipp-20111122/psastro/src/psastroZeroPoint.c	(revision 33632)
+++ /branches/eam_branches/ipp-20111122/psastro/src/psastroZeroPoint.c	(revision 33633)
@@ -189,4 +189,6 @@
       pmAstromObj *ref = refstars->data[match->ref];
 
+      // XXX I should be applying the airmass term here or in psastroLoadRefstars
+      // (ie, ref->Mag would be a prediction for a given star.
       float value = ref->Mag - raw->Mag - 2.5*log10(exptime);
       psVectorAppend (dMag, value);
@@ -214,12 +216,15 @@
 
     psStats *stats = NULL;
+    float zeroPtObs, zeroPtErr;
     if (useMean) {
         // stats structure and mask for use in measuring the clipping statistic
         // this analysis has too few data points to use the robust median method
-        stats = psStatsAlloc (PS_STAT_CLIPPED_MEAN | PS_STAT_CLIPPED_STDEV);
+        stats = psStatsAlloc (PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_STDEV);
         if (!psVectorStats (stats, dMag, NULL, NULL, 0)) {
             psError(PS_ERR_UNKNOWN, false, "failure to measure zero point by mean");
             return false;
         }
+	zeroPtObs = stats->robustMedian;
+	zeroPtErr = stats->robustStdev;
     } else {
         stats = psastroStatsPercentile (dMag, recipe);
@@ -228,11 +233,13 @@
             return false;
         }
-    }
-    fprintf (stderr, "zero point %f +/- %f using %ld stars; transparency %f\n", stats->clippedMean, stats->clippedStdev, dMag->n, zeropt - stats->clippedMean);
-
-    psMetadataAddF32 (header, PS_LIST_TAIL, "ZPT_OBS", PS_META_REPLACE, "measured zero point", stats->clippedMean);
+	zeroPtObs = stats->clippedMean;
+	zeroPtErr = stats->clippedStdev;
+    }
+    fprintf (stderr, "zero point %f +/- %f using %ld stars; transparency %f\n", zeroPtObs, zeroPtErr, dMag->n, zeropt - zeroPtObs);
+
+    psMetadataAddF32 (header, PS_LIST_TAIL, "ZPT_OBS", PS_META_REPLACE, "measured zero point", zeroPtObs);
     psMetadataAddF32 (header, PS_LIST_TAIL, "ZPT_REF", PS_META_REPLACE, "reference zero point", zeropt);
-    psMetadataAddF32 (header, PS_LIST_TAIL, "ZPT_ERR", PS_META_REPLACE, "error on zero point",  stats->clippedStdev);
-    psMetadataAddF32 (header, PS_LIST_TAIL, "ZPT_OFF", PS_META_REPLACE, "zero point offset",    zeropt - stats->clippedMean);
+    psMetadataAddF32 (header, PS_LIST_TAIL, "ZPT_ERR", PS_META_REPLACE, "error on zero point",  zeroPtErr);
+    psMetadataAddF32 (header, PS_LIST_TAIL, "ZPT_OFF", PS_META_REPLACE, "zero point offset",    zeropt - zeroPtObs);
 
     psFree (stats);
