Index: trunk/ppImage/src/ppImageOptions.c
===================================================================
--- trunk/ppImage/src/ppImageOptions.c	(revision 17688)
+++ trunk/ppImage/src/ppImageOptions.c	(revision 18556)
@@ -50,9 +50,10 @@
 
     // default flags for various activities
-    options->maskValue       = 0x00;    // Default mask value
-    options->satMask         = 0x00;    // Saturated pixels
-    options->badMask         = 0x00;    // Bad pixels
-    options->flatMask        = 0x00;    // Bad flat pixels
-    options->blankMask       = 0x00;    // Blank (no data, cell gap) pixels
+    options->maskValue       = 0x00;    // Default mask value (used to skip / ignore pixels)
+    options->satMask         = 0x00;    // Saturated pixels (supplied to pmReadoutGenerateMask)
+    options->badMask         = 0x00;    // Bad (low) pixels (supplied to pmReadoutGenerateMask)
+    options->flatMask        = 0x00;    // Bad flat pixels (supplied to pmFlatField)
+    options->blankMask       = 0x00;    // Blank (no data, cell gap) pixels (supplied to pmChipMosaic, pmFPAMosaic)
+    options->markValue       = 0x00;    // A safe bit for internal marking
 
     // Non-linearity default options
@@ -190,15 +191,6 @@
     options->doWeightBuild = psMetadataLookupBool(NULL, recipe, "WEIGHT.BUILD");
 
-    // Mask recipe options
+    // Mask recipe options (note that mask bit values are set in ppImageSetMaskBits.c)
     options->doMask = psMetadataLookupBool(NULL, recipe, "MASK");
-    const char *masks = psMetadataLookupStr(&status, recipe, "MASK.VALUE");
-    if (status) {
-        options->maskValue = pmConfigMask(masks, config);
-    }
-    options->satMask = pmConfigMask("SAT", config);
-    options->badMask = pmConfigMask("BAD", config);
-    options->flatMask = pmConfigMask("FLAT", config);
-    options->blankMask = pmConfigMask("BLANK", config);
-    // XXX should it be an error for these to not exist?
 
     options->doBias = psMetadataLookupBool(NULL, recipe, "BIAS");
