Index: trunk/psLib/src/math/psStats.c
===================================================================
--- trunk/psLib/src/math/psStats.c	(revision 659)
+++ trunk/psLib/src/math/psStats.c	(revision 660)
@@ -174,11 +174,15 @@
     int i = 0;
     float mean = 0.0;
+    int count = 0;
 
     if (maskVector != NULL) {
         for (i=0;i<myVector->n;i++) {
             if (!(maskVal & maskVector->vec.i[i])) {
-                mean+= maskVector->vec.i[i];
-            }
-        }
+                mean+= myVector->vec.f[i];
+                count++;
+            }
+        }
+        mean/= (float) count;
+        return(mean);
     } else {
         for (i=0;i<myVector->n;i++) {
@@ -348,72 +352,94 @@
     }
 
-    switch (stats->options) {
-    case PS_STAT_SAMPLE_MEAN:
-        newStruct->sampleMean = p_psArraySampleMean(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_SAMPLE_MEDIAN:
+    if (stats->options & PS_STAT_SAMPLE_MEAN) {
+        newStruct->sampleMean = p_psArraySampleMean(myVector,
+                                maskVector,
+                                maskVal);
+    }
+
+    if (stats->options & PS_STAT_MAX) {
+        newStruct->max = p_psArrayMax(myVector, maskVector, maskVal);
+    }
+
+    if (stats->options & PS_STAT_MIN) {
+        newStruct->min = p_psArrayMin(myVector, maskVector, maskVal);
+    }
+
+    if (stats->options & PS_STAT_NVALUES) {
+        newStruct->nValues = p_psArrayNValues(myVector, maskVector, maskVal);
+    }
+
+    if (stats->options & PS_STAT_SAMPLE_MEDIAN) {
         newStruct->sampleMedian = p_psArrayXXX(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_SAMPLE_STDEV:
+    }
+
+    if (stats->options & PS_STAT_SAMPLE_STDEV) {
         newStruct->sampleStdev = p_psArrayXXX(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_SAMPLE_UQ:
+    }
+
+    if (stats->options & PS_STAT_SAMPLE_UQ) {
         newStruct->sampleUQ = p_psArrayXXX(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_SAMPLE_LQ:
+    }
+
+    if (stats->options & PS_STAT_SAMPLE_LQ) {
         newStruct->sampleLQ = p_psArrayXXX(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_ROBUST_MEAN:
+    }
+
+    if (stats->options & PS_STAT_ROBUST_MEAN) {
         newStruct->robustMean = p_psArrayXXX(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_ROBUST_MEAN_NVALUES:
+    }
+
+    if (stats->options & PS_STAT_ROBUST_MEAN_NVALUES) {
         newStruct->robustMeanNvalues = p_psArrayXXX(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_ROBUST_MEDIAN:
+    }
+
+    if (stats->options & PS_STAT_ROBUST_MEDIAN) {
         newStruct->robustMedian = p_psArrayXXX(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_ROBUST_MEDIAN_NVALUES:
+    }
+
+    if (stats->options & PS_STAT_ROBUST_MEDIAN_NVALUES) {
         newStruct->robustMedianNvalues = p_psArrayXXX(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_ROBUST_MODE:
+    }
+
+    if (stats->options & PS_STAT_ROBUST_MODE) {
         newStruct->robustMode = p_psArrayXXX(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_ROBUST_MODE_NVALUES:
+    }
+
+    if (stats->options & PS_STAT_ROBUST_MODE_NVALUES) {
         newStruct->robustModeNvalues = p_psArrayXXX(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_ROBUST_STDEV:
+    }
+
+    if (stats->options & PS_STAT_ROBUST_STDEV) {
         newStruct->robustStdev = p_psArrayXXX(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_ROBUST_UQ:
+    }
+
+    if (stats->options & PS_STAT_ROBUST_UQ) {
         newStruct->robustUQ = p_psArrayXXX(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_ROBUST_LQ:
+    }
+
+    if (stats->options & PS_STAT_ROBUST_LQ) {
         newStruct->robustLQ = p_psArrayXXX(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_CLIPPED_MEAN:
+    }
+
+    if (stats->options & PS_STAT_CLIPPED_MEAN) {
         newStruct->clippedMean = p_psArrayXXX(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_CLIPPED_MEAN_NVALUES:
+    }
+
+    if (stats->options & PS_STAT_CLIPPED_MEAN_NVALUES) {
         newStruct->clippedMeanNvalues = p_psArrayXXX(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_CLIPPED_MEAN_NSIGMA:
+    }
+
+    if (stats->options & PS_STAT_CLIPPED_MEAN_NSIGMA) {
         newStruct->clipSigma = p_psArrayXXX(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_CLIPPED_STDEV:
+    }
+
+    if (stats->options & PS_STAT_CLIPPED_STDEV) {
         newStruct->clippedStdev = p_psArrayXXX(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_MAX:
-        newStruct->max = p_psArrayMax(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_MIN:
-        newStruct->min = p_psArrayMin(myVector, maskVector, maskVal);
-        break;
-    case PS_STAT_NVALUES:
-        newStruct->nValues = p_psArrayNValues(myVector, maskVector, maskVal);
-        break;
-    default:
-        psError(__func__, "Unknown options 0x%x.\n", stats->options);
-        break;
-    }
+    }
+
+
+    //    OLD CODE: Should we check for an unknown option?
+    //    default:
+    //        psError(__func__, "Unknown options 0x%x.\n", stats->options);
 
     return(newStruct);
