Index: trunk/stac/src/stacCombine.c
===================================================================
--- trunk/stac/src/stacCombine.c	(revision 2661)
+++ trunk/stac/src/stacCombine.c	(revision 2670)
@@ -14,5 +14,5 @@
 #if 0
     // Would like to use psVectorStats, but it doesn't have errors built in yet
-    psStats *stats = psStatsAlloc(PS_STAT_SAMPLE_MEAN | PS_STAT_SAMPLE_STDEV);
+    psStats *stats = psStatsAlloc(PS_STAT_SAMPLE_MEAN);
     (void)psVectorStats(stats, values, masks, 1);
     float mean = stats->sampleMean;
@@ -25,5 +25,5 @@
     int num = values->n;
     for (int i = 0; i < num; i++) {
-	if (masks->data.U8[i]) {
+	if (! masks->data.U8[i]) {
 	    sum += values->data.F32[i] / SQUARE(errors->data.F32[i]);
 	    weights += 1.0 / SQUARE(errors->data.F32[i]);
@@ -46,5 +46,5 @@
 {
     psStats *stats = psStatsAlloc(PS_STAT_SAMPLE_MEDIAN);
-    (void)psVectorStats(stats, values, masks, 0);
+    (void)psVectorStats(stats, values, masks, 1);
     float median = stats->sampleMedian;
     psFree(stats);
@@ -132,11 +132,11 @@
 		deltas->data.F32[i] = delta;
 		if ((pixel >= saturated) || (pixel <= bad) || (! isfinite(pixel)) || (! isfinite(delta))) {
-		    mask->data.U8[i] = (psU8)0; // Don't use!
+		    mask->data.U8[i] = (psU8)1; // Don't use!
 		} else {
-		    mask->data.U8[i] = (psU8)1; // Use.
+		    mask->data.U8[i] = (psU8)0; // Use.
 		}
 	    }
 	    
-	    float average = stacCombineMedian(pixels, deltas, mask); // Combined value
+	    float average = stacCombineMean(pixels, deltas, mask); // Combined value
 
 #ifdef TESTING
@@ -145,5 +145,5 @@
 	    int numGoodPix = 0;
 	    for (int i = 0; i < nImages; i++) {
-		if (mask->data.U8[i]) {
+		if (! mask->data.U8[i]) {
 		    chi2->data.F32[y][x] += SQUARE((pixels->data.F32[i] - average) / deltas->data.F32[i]);
 		    numGoodPix++;
@@ -158,5 +158,5 @@
 		int maxIndex = -1;
 		for (int i = 0; i < nImages; i++) {
-		    if (mask->data.U8[i] && ((pixels->data.F32[i] - average) / deltas->data.F32[i] > max)) {
+		    if (!mask->data.U8[i] && ((pixels->data.F32[i] - average) / deltas->data.F32[i] > max)) {
 			max = (pixels->data.F32[i] - average) / deltas->data.F32[i];
 			maxIndex = i;
@@ -165,5 +165,5 @@
 		// Reject the pixel with the maximum deviation
 		if (max > reject) {    
-		    mask->data.U8[maxIndex] = 0;
+		    mask->data.U8[maxIndex] = 1;
 		    ((psImage*)((*rejected)->data[maxIndex]))->data.F32[y][x] += 1.0;
 		    // Re-do combination following rejection
