Index: trunk/ppStack/src/ppStackArguments.c
===================================================================
--- trunk/ppStack/src/ppStackArguments.c	(revision 16704)
+++ trunk/ppStack/src/ppStackArguments.c	(revision 16709)
@@ -85,6 +85,5 @@
 
 // Get a string value from the command-line and add it to the target
-static bool valueArgStr(pmConfig *config,      // Configuration
-                        psMetadata *arguments, // Command-line arguments
+static bool valueArgStr(psMetadata *arguments, // Command-line arguments
                         const char *argName, // Argument name in the command-line arguments
                         const char *mdName, // Name for value in the metadata
@@ -97,4 +96,24 @@
     }
     return false;
+}
+
+// Get a string value from the command-line or recipe and add it to the target
+static bool valueArgRecipeStr(psMetadata *arguments, // Command-line arguments
+                              psMetadata *recipe, // Recipe
+                              const char *argName, // Argument name in the command-line arguments
+                              const char *mdName, // Name for value in the metadata and recipe
+                              psMetadata *target // Target metadata to which to add value
+                              )
+{
+    psString value = psMetadataLookupStr(NULL, arguments, argName); // Value of interest
+    if (!value) {
+        value = psMetadataLookupStr(NULL, recipe, mdName);
+        if (!value) {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Unable to find %s in recipe %s",
+                    mdName, PPSTACK_RECIPE);
+            return false;
+        }
+    }
+    return psMetadataAddStr(target, PS_LIST_TAIL, mdName, 0, NULL, value);
 }
 
@@ -152,5 +171,5 @@
                      "Root name of the output image list", argv[2]);
 
-    valueArgStr(config, arguments, "-stats", "STATS", config->arguments);
+    valueArgStr(arguments, "-stats", "STATS", config->arguments);
 
     psMetadata *recipe = psMetadataLookupMetadata(NULL, config->recipes, PPSTACK_RECIPE); // Recipe for ppSim
@@ -172,5 +191,5 @@
     VALUE_ARG_RECIPE_FLOAT("-psf-radius",  "PSF.RADIUS",    F32);
     VALUE_ARG_RECIPE_INT("-psf-order",     "PSF.ORDER",     S32, 0);
-    valueArgStr(config, arguments, "-psf-model", "PSF.MODEL", config->arguments);
+    valueArgStr(arguments, "-psf-model", "PSF.MODEL", config->arguments);
 
     if (psMetadataLookupBool(NULL, arguments, "-photometry") ||
@@ -192,7 +211,7 @@
     }
 
-    valueArgStr(config, arguments, "-temp-image",  "TEMP.IMAGE",  config->arguments);
-    valueArgStr(config, arguments, "-temp-mask",   "TEMP.MASK",   config->arguments);
-    valueArgStr(config, arguments, "-temp-weight", "TEMP.WEIGHT", config->arguments);
+    valueArgRecipeStr(arguments, recipe, "-temp-image",  "TEMP.IMAGE",  config->arguments);
+    valueArgRecipeStr(arguments, recipe, "-temp-mask",   "TEMP.MASK",   config->arguments);
+    valueArgRecipeStr(arguments, recipe, "-temp-weight", "TEMP.WEIGHT", config->arguments);
 
     if (psMetadataLookupBool(NULL, arguments, "-temp-delete") ||
