Index: trunk/ppStack/src/ppStackArguments.c
===================================================================
--- trunk/ppStack/src/ppStackArguments.c	(revision 13557)
+++ trunk/ppStack/src/ppStackArguments.c	(revision 13593)
@@ -64,4 +64,20 @@
 }
 
+// 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, PPSTACK_RECIPE); \
+            goto ERROR; \
+        } \
+    } \
+    psMaskType value = pmConfigMask(name, config); \
+    psMetadataAddU8(config->arguments, PS_LIST_TAIL, RECIPENAME, 0, NULL, value); \
+}
+
 // Get a string value from the command-line and add it to the target
 static bool valueArgStr(pmConfig *config,      // Configuration
@@ -119,6 +135,6 @@
     VALUE_ARG_RECIPE_FLOAT("-convolve-rej", "CONVOLVE.REJ", F32);
     VALUE_ARG_RECIPE_FLOAT("-extent",       "EXTENT",       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");
 
     psTrace("ppStack", 1, "Done reading command-line arguments\n");
