Index: trunk/psphot/src/psphotApResid.c
===================================================================
--- trunk/psphot/src/psphotApResid.c	(revision 17113)
+++ trunk/psphot/src/psphotApResid.c	(revision 17288)
@@ -267,11 +267,17 @@
 	psStatsInit (statsM);
 
-	psVectorStats (statsS, dASubset, NULL, mkSubset, 0xff);
-	psVectorStats (statsM, dMSubset, NULL, mkSubset, 0xff);
-
-	dSo->data.F32[i] = statsS->robustStdev;
-	dMo->data.F32[i] = statsM->sampleMean;
-
-	dRo->data.F32[i] = statsS->robustStdev / statsM->sampleMean;
+	if (j > 2) {
+	    bool status = true;
+	    status &= psVectorStats (statsS, dASubset, NULL, mkSubset, 0xff);
+	    status &= psVectorStats (statsM, dMSubset, NULL, mkSubset, 0xff);
+	    if (!status) { psErrorClear (); }
+	    dSo->data.F32[i] = statsS->robustStdev;
+	    dMo->data.F32[i] = statsM->sampleMean;
+	    dRo->data.F32[i] = statsS->robustStdev / statsM->sampleMean;
+	} else {
+	    dSo->data.F32[i] = NAN;
+	    dMo->data.F32[i] = NAN;
+	    dRo->data.F32[i] = NAN;
+	}
     }
     psFree (dMSubset);
@@ -280,5 +286,8 @@
     
     psStats *stats = psStatsAlloc (PS_STAT_SAMPLE_MEDIAN);
-    psVectorStats (stats, dRo, NULL, NULL, 0);
+    if (!psVectorStats (stats, dRo, NULL, NULL, 0)) {
+	// XXX better testing of raised error
+	psErrorClear();
+    }
 
     *errorScale = stats->sampleMedian;
