Index: trunk/psModules/src/detrend/pmMaskStats.c
===================================================================
--- trunk/psModules/src/detrend/pmMaskStats.c	(revision 28099)
+++ trunk/psModules/src/detrend/pmMaskStats.c	(revision 28100)
@@ -8,4 +8,5 @@
 #include <pslib.h>
 #include <psmodules.h>
+
 #include "pmHDU.h"
 #include "pmFPA.h"
@@ -16,11 +17,11 @@
 
 
-# define ESCAPE { \
-    psError(PS_ERR_UNKNOWN, false, "I/O failure in pmMaskStats");	\
-    psFree (view);							\
-    return false;							\
-  }
+#define ESCAPE { \
+        psError(psErrorCodeLast(), false, "I/O failure in pmMaskStats"); \
+        psFree (view);                                                  \
+        return false;                                                   \
+    }
 
-  
+
 
 
@@ -30,9 +31,9 @@
 
   bool status;
-  
-  psU16 staticMaskVal = psMetadataLookupU32(&status, config->recipes, "MASKSTAT.STATIC");
-  psU16 magicMaskVal = psMetadataLookupU32(&status, config->recipes, "MASKSTAT.MAGIC");
-  psU16 dynamicMaskVal = psMetadataLookupU32(&status, config->recipes, "MASKSTAT.DYNAMIC");
-  psU16 advisoryMaskVal = psMetadataLookupU32(&status, config->recipes, "MASKSTAT.ADVISORY");
+
+  psImageMaskType staticMaskVal = psMetadataLookupImageMask(&status, config->recipes, "MASKSTAT.STATIC");
+  psImageMaskType magicMaskVal = psMetadataLookupImageMask(&status, config->recipes, "MASKSTAT.MAGIC");
+  psImageMaskType dynamicMaskVal = psMetadataLookupImageMask(&status, config->recipes, "MASKSTAT.DYNAMIC");
+  psImageMaskType advisoryMaskVal = psMetadataLookupImageMask(&status, config->recipes, "MASKSTAT.ADVISORY");
 
   psS32 Npix_valid = 0;
@@ -54,24 +55,24 @@
       if (!cell->process || !cell->file_exists) {continue; }
       while ((readout = pmFPAviewNextReadout(view, fpa, 1)) != NULL) {
-	if (!readout->data_exists) {continue; }
+        if (!readout->data_exists) {continue; }
 
-	psImage *mask = readout->mask;
-	if (!pmSingleImageMaskStats(mask,&Npix_valid,&Npix_static,&Npix_magic,
-				    &Npix_dynamic,&Npix_advisory,
-				    staticMaskVal,magicMaskVal,
-				    dynamicMaskVal,advisoryMaskVal)) {
-	  psError(PS_ERR_UNKNOWN, false, "Unable to calculate masks for readout.");
-	  return(false);
-	}
-	psMetadataAddS32(readout->analysis, PS_LIST_TAIL,"MASKFRAC_NPIX", 0,
-			 "Number of valid pixels", Npix_valid);
-	psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_STATIC", 0,
-			 "Fraction of pixels statically masked", (float) Npix_static / Npix_valid);
-	psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_DYNAMIC", 0,
-			 "Fraction of pixels dynamically masked", (float) Npix_dynamic / Npix_valid);
-	psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_MAGIC", 0,
-			 "Fraction of pixels magically masked", (float) Npix_magic / Npix_valid);
-	psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_ADVISORY", 0,
-			 "Fraction of pixels masked as an advisory", (float) Npix_advisory / Npix_valid);
+        psImage *mask = readout->mask;
+        if (!pmSingleImageMaskStats(mask,&Npix_valid,&Npix_static,&Npix_magic,
+                                    &Npix_dynamic,&Npix_advisory,
+                                    staticMaskVal,magicMaskVal,
+                                    dynamicMaskVal,advisoryMaskVal)) {
+          psError(PS_ERR_UNKNOWN, false, "Unable to calculate masks for readout.");
+          return(false);
+        }
+        psMetadataAddS32(readout->analysis, PS_LIST_TAIL,"MASKFRAC_NPIX", 0,
+                         "Number of valid pixels", Npix_valid);
+        psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_STATIC", 0,
+                         "Fraction of pixels statically masked", (float) Npix_static / Npix_valid);
+        psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_DYNAMIC", 0,
+                         "Fraction of pixels dynamically masked", (float) Npix_dynamic / Npix_valid);
+        psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_MAGIC", 0,
+                         "Fraction of pixels magically masked", (float) Npix_magic / Npix_valid);
+        psMetadataAddF32(readout->analysis,PS_LIST_TAIL, "MASKFRAC_ADVISORY", 0,
+                         "Fraction of pixels masked as an advisory", (float) Npix_advisory / Npix_valid);
       }
     }
@@ -83,8 +84,8 @@
 
 bool pmSingleImageMaskStats(psImage *mask,
-			    psS32 *Npix_valid, psS32 *Npix_static, psS32 *Npix_magic,
-			    psS32 *Npix_dynamic, psS32 *Npix_advisory,
-			    psU16 staticMaskVal, psU16 magicMaskVal,
-			    psU16 dynamicMaskVal, psU16 advisoryMaskVal) {
+                            psS32 *Npix_valid, psS32 *Npix_static, psS32 *Npix_magic,
+                            psS32 *Npix_dynamic, psS32 *Npix_advisory,
+                            psImageMaskType staticMaskVal, psImageMaskType magicMaskVal,
+                            psImageMaskType dynamicMaskVal, psImageMaskType advisoryMaskVal) {
   PS_ASSERT_IMAGE_NON_NULL(mask, false);
   *Npix_valid = 0;
@@ -95,23 +96,22 @@
 
   psImageMaskType **maskData = mask->data.PS_TYPE_IMAGE_MASK_DATA;
-  psWarning("HERE: %ld %d %d\n",(long) maskData, mask->numRows,mask->numCols);
-  for (int i = 0; i < mask->numRows - 1; i++) {
-    for (int j = 0; j < mask->numCols - 1; j++) {
+  for (int i = 0; i < mask->numRows; i++) {
+    for (int j = 0; j < mask->numCols; j++) {
       *Npix_valid += 1;
       if (maskData[i][j] & staticMaskVal) {
-	*Npix_static += 1;
-	continue;
+        *Npix_static += 1;
+        continue;
       }
       if (maskData[i][j] & dynamicMaskVal) {
-	*Npix_dynamic += 1;
-	continue;
+        *Npix_dynamic += 1;
+        continue;
       }
       if (maskData[i][j] & magicMaskVal) {
-	*Npix_magic += 1;
-	continue;
+        *Npix_magic += 1;
+        continue;
       }
       if (maskData[i][j] & advisoryMaskVal) {
-	*Npix_advisory += 1;
-	continue;
+        *Npix_advisory += 1;
+        continue;
       }
     }
Index: trunk/psModules/src/detrend/pmMaskStats.h
===================================================================
--- trunk/psModules/src/detrend/pmMaskStats.h	(revision 28099)
+++ trunk/psModules/src/detrend/pmMaskStats.h	(revision 28100)
@@ -4,8 +4,8 @@
 bool pmFPAMaskStats(pmFPA *fpa, pmConfig *config);
 bool pmSingleImageMaskStats(psImage *mask,
-			    psS32 *Npix_valid, psS32 *Npix_static, psS32 *Npix_magic,
-			    psS32 *Npix_dynamic, psS32 *Npix_advisory,
-			    psU16 staticMaskVal, psU16 magicMaskVal,
-			    psU16 dynamicMaskVal, psU16 advisoryMaskVal);
+                            psS32 *Npix_valid, psS32 *Npix_static, psS32 *Npix_magic,
+                            psS32 *Npix_dynamic, psS32 *Npix_advisory,
+                            psImageMaskType staticMaskVal, psImageMaskType magicMaskVal,
+                            psImageMaskType dynamicMaskVal, psImageMaskType advisoryMaskVal);
 
 
