Index: trunk/pswarp/src/pswarpSetMaskBits.c
===================================================================
--- trunk/pswarp/src/pswarpSetMaskBits.c	(revision 18558)
+++ trunk/pswarp/src/pswarpSetMaskBits.c	(revision 21183)
@@ -10,8 +10,7 @@
 bool pswarpSetMaskBits (pmConfig *config) {
 
-    psMaskType maskIn = 0x00;			// mask for the input image
-    psMaskType markIn = 0x00;			// mark for the input image
-    psMaskType maskOut = 0x00;			// mask for the output image
-    psMaskType markOut = 0x00;			// mark for the output image
+    psImageMaskType maskIn = 0x00;			// mask for the input image
+    psImageMaskType markIn = 0x00;			// mark for the input image
+    psImageMaskType maskOut = 0x00;			// mask for the output image
 
     // this function sets the required single-image mask bits
@@ -22,5 +21,5 @@
 
     // mask for non-linear flat regions (default to DETECTOR if not defined)
-    psMaskType badMask = pmConfigMaskGet("BAD.WARP", config); 
+    psImageMaskType badMask = pmConfigMaskGet("BAD.WARP", config); 
     if (!badMask) {
 	badMask = 0x01;
@@ -30,5 +29,5 @@
 
     // mask for non-linear flat regions (default to DETECTOR if not defined)
-    psMaskType poorMask = pmConfigMaskGet("POOR.WARP", config); 
+    psImageMaskType poorMask = pmConfigMaskGet("POOR.WARP", config); 
     if (!poorMask) {
 	poorMask = 0x02;
@@ -38,18 +37,18 @@
 
     // search for an unset bit to use for MARK:
-    markOut = 0x80;
+    psImageMaskType markOut   = 0x00;
+    psImageMaskType markTrial = 0x01;
 
-    int nBits = sizeof(psMaskType) * 8;
+    int nBits = sizeof(psImageMaskType) * 8;
     for (int i = 0; !markOut && (i < nBits); i++) {
-	if (maskOut & markOut) {
-	    markOut >>= 1;
-	} else {
-	    markOut = markOut;
-	}
+        if (maskOut & markTrial) {
+            markTrial <<= 1;
+        } else {
+            markOut = markTrial;
+        }
     }
-
     if (!markOut) {
-	psError (PS_ERR_UNKNOWN, true, "Unable to define the MARK bit mask: all bits taken!");
-	return false;
+        psError (PS_ERR_UNKNOWN, true, "Unable to define the MARK bit mask: all bits taken!");
+        return false;
     }
 
@@ -63,8 +62,8 @@
     // set maskOut and markOut in the psphot recipe
     // NOTE: psphot works on the output images, not input images, so set the MARK and MASK correctly here
-    psMetadataAddU8 (warpRecipe, PS_LIST_TAIL, "MASK.INPUT",  PS_META_REPLACE, "user-defined mask", maskIn);
-    psMetadataAddU8 (warpRecipe, PS_LIST_TAIL, "MARK.INPUT",  PS_META_REPLACE, "user-defined mask", markIn);
-    psMetadataAddU8 (warpRecipe, PS_LIST_TAIL, "MASK.OUTPUT", PS_META_REPLACE, "user-defined mask", maskOut);
-    psMetadataAddU8 (warpRecipe, PS_LIST_TAIL, "MARK.OUTPUT", PS_META_REPLACE, "user-defined mask", markOut);
+    psMetadataAddImageMask (warpRecipe, PS_LIST_TAIL, "MASK.INPUT",  PS_META_REPLACE, "user-defined mask", maskIn);
+    psMetadataAddImageMask (warpRecipe, PS_LIST_TAIL, "MARK.INPUT",  PS_META_REPLACE, "user-defined mask", markIn);
+    psMetadataAddImageMask (warpRecipe, PS_LIST_TAIL, "MASK.OUTPUT", PS_META_REPLACE, "user-defined mask", maskOut);
+    psMetadataAddImageMask (warpRecipe, PS_LIST_TAIL, "MARK.OUTPUT", PS_META_REPLACE, "user-defined mask", markOut);
 
     // update the psphot recipe
@@ -77,6 +76,6 @@
     // set maskOut and markOut in the psphot recipe
     // NOTE: psphot works on the output images, not input images, so set the MARK and MASK correctly here
-    psMetadataAddU8 (psphotRecipe, PS_LIST_TAIL, "MARK.PSPHOT", PS_META_REPLACE, "user-defined mask", markOut);
-    psMetadataAddU8 (psphotRecipe, PS_LIST_TAIL, "MASK.PSPHOT", PS_META_REPLACE, "user-defined mask", maskOut);
+    psMetadataAddImageMask (psphotRecipe, PS_LIST_TAIL, "MARK.PSPHOT", PS_META_REPLACE, "user-defined mask", markOut);
+    psMetadataAddImageMask (psphotRecipe, PS_LIST_TAIL, "MASK.PSPHOT", PS_META_REPLACE, "user-defined mask", maskOut);
 
     return true;
