Index: trunk/ppSub/src/ppSubArguments.c
===================================================================
--- trunk/ppSub/src/ppSubArguments.c	(revision 13509)
+++ trunk/ppSub/src/ppSubArguments.c	(revision 13593)
@@ -57,4 +57,20 @@
     } \
     psMetadataAdd##TYPE(config->arguments, PS_LIST_TAIL, RECIPENAME, 0, NULL, value); \
+}
+
+// Get a mask value from the command-line or recipe, and add it to the arguments
+#define VALUE_ARG_RECIPE_MASK(ARGNAME, RECIPENAME) { \
+    bool mdok; \
+    const char *name = psMetadataLookupStr(&mdok, arguments, ARGNAME); \
+    if (!mdok || !name || strlen(name) == 0) { \
+        name = psMetadataLookupStr(NULL, recipe, RECIPENAME); \
+        if (!name) { \
+            psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Unable to find %s in recipe %s", \
+                RECIPENAME, PPSUB_RECIPE); \
+            goto ERROR; \
+        } \
+    } \
+    psMaskType value = pmConfigMask(name, config); \
+    psMetadataAddU8(config->arguments, PS_LIST_TAIL, RECIPENAME, 0, NULL, value); \
 }
 
@@ -200,6 +216,6 @@
     VALUE_ARG_RECIPE_INT("-iter",        "ITER",            S32, 0);
     VALUE_ARG_RECIPE_FLOAT("-rej",       "REJ",             F32);
-    VALUE_ARG_RECIPE_INT("-mask-bad",    "MASK.BAD",        U8, 0);
-    VALUE_ARG_RECIPE_INT("-mask-blank",  "MASK.BLANK",      U8, 0);
+    VALUE_ARG_RECIPE_MASK("-mask-bad",   "MASK.BAD");
+    VALUE_ARG_RECIPE_MASK("-mask-blank", "MASK.BLANK");
 
     vectorArgRecipe(config, arguments, "-isis-widths", recipe, "ISIS.WIDTHS", config->arguments, PS_TYPE_F32);
