Index: trunk/psphot/src/psPolynomials.c
===================================================================
--- trunk/psphot/src/psPolynomials.c	(revision 5068)
+++ trunk/psphot/src/psPolynomials.c	(revision 5084)
@@ -507,9 +507,13 @@
     psVector *zFit   = NULL;
     psVector *zResid = psVectorAlloc (x->n, PS_TYPE_F64);
-
-    // XXX EAM : use SAMPLE_MEAN and SAMPLE_STDEV for stats:
+    float minClipSigma = stats->min;
+    float maxClipSigma = stats->max;
+    float minClipValue;
+    float maxClipValue;
+
+    // XXX EAM : use SAMPLE_MEDIAN and SAMPLE_STDEV for stats:
     stats->options |= (PS_STAT_SAMPLE_MEDIAN | PS_STAT_SAMPLE_STDEV);
 
-    for (int N = 0; N < 3; N++) {
+    for (int N = 0; N < stats->clipIter; N++) {
 	int Nkeep = 0;
 
@@ -519,5 +523,8 @@
 
 	stats  = psVectorStats (stats, zResid, NULL, mask, maskValue);
-	psTrace (".psphot.RobustFit", 4, "residual stats for robust fit:  %g +/- %g\n", 
+	minClipValue = -1*fabs(minClipSigma)*stats->sampleStdev;
+	maxClipValue = +1*fabs(maxClipSigma)*stats->sampleStdev;
+
+	psTrace (".psphot.VectorClipFit", 4, "residual stats for robust fit:  %g +/- %g\n", 
 		 stats->sampleMedian, stats->sampleStdev);
 
@@ -527,5 +534,9 @@
 	for (int i = 0; i < zResid->n; i++) {
 	    if (mask->data.U8[i]) continue;
-	    if (fabs(zResid->data.F64[i] - stats->sampleMedian) > 2*stats->sampleStdev) {
+	    if (zResid->data.F64[i] - stats->sampleMedian > maxClipValue) {
+		mask->data.U8[i] |= 0x01;
+		continue;
+	    }       
+	    if (zResid->data.F64[i] - stats->sampleMedian < minClipValue) {
 		mask->data.U8[i] |= 0x01;
 		continue;
@@ -534,5 +545,5 @@
 	}
 
-	psTrace (".psphot.RobustFit", 4, "keeping %d of %d pts for fit\n", 
+	psTrace (".psphot.VectorClipFit", 4, "keeping %d of %d pts for fit\n", 
 		 Nkeep, x->n);
 
