Index: trunk/ppStack/src/ppStackArguments.c
===================================================================
--- trunk/ppStack/src/ppStackArguments.c	(revision 14811)
+++ trunk/ppStack/src/ppStackArguments.c	(revision 14834)
@@ -114,7 +114,5 @@
     psMetadataAddU8(arguments,  PS_LIST_TAIL, "-mask-blank", 0, "Mask value for blank region", 0);
     psMetadataAddF32(arguments, PS_LIST_TAIL, "-threshold-mask", 0, "Threshold for mask deconvolution", NAN);
-
-    // XXX I want to get this from the recipe as well.  (same for everything else...)
-    psMetadataAddBool(arguments, PS_LIST_TAIL, "-photom", 0, "Mask value for blank region", FALSE);
+    psMetadataAddBool(arguments, PS_LIST_TAIL, "-photometry", 0, "Do photometry on stacked image?", false);
 
     if (argc == 1 || !psArgumentParse(arguments, &argc, argv) || argc != 3) {
@@ -165,4 +163,10 @@
     VALUE_ARG_RECIPE_FLOAT("-threshold-mask", "THRESHOLD.MASK", F32);
 
+    if (psMetadataLookupBool(NULL, arguments, "-photometry") ||
+        psMetadataLookupBool(NULL, recipe, "PHOTOMETRY")) {
+        psMetadataAddBool(config->arguments, PS_LIST_TAIL, "PHOTOMETRY", 0,
+                          "Do photometry on stacked image?", true);
+    }
+
     psTrace("ppStack", 1, "Done reading command-line arguments\n");
     psFree(arguments);
Index: trunk/ppStack/src/ppStackCamera.c
===================================================================
--- trunk/ppStack/src/ppStackCamera.c	(revision 14811)
+++ trunk/ppStack/src/ppStackCamera.c	(revision 14834)
@@ -229,14 +229,18 @@
     // we create a copy of the mosaicked image for psphot so we can write out a clean image
     bool mdok = false;
-    bool doPhotom = psMetadataLookupBool(&mdok, config->arguments, "PHOTOM"); // perform photometry
+    bool doPhotom = psMetadataLookupBool(&mdok, config->arguments, "PHOTOMETRY"); // perform photometry
     if (doPhotom) {
-        // this file is just used as a carrier; output files (eg, PSPHOT.RESID) are defined by
+        // This file, PSPHOT.INPUT, is just used as a carrier; output files (eg, PSPHOT.RESID) are defined by
         // psphotDefineFiles
-        pmFPAfile *psphotInput = pmFPAfileDefineFromFPA (config, output->fpa, 1, 1, "PSPHOT.INPUT");
-        PS_ASSERT (psphotInput, false);
-
-        // define associated psphot input/output files
-        if (!psphotDefineFiles (config, psphotInput)) {
-            psError(PSPHOT_ERR_CONFIG, false, "Trouble defining the additional input/output files for psphot");
+        pmFPAfile *psphotInput = pmFPAfileDefineFromFPA(config, output->fpa, 1, 1, "PSPHOT.INPUT");
+        if (!psphotInput) {
+            psError(PS_ERR_IO, false, _("Unable to generate output file from PSPHOT.INPUT"));
+            return false;
+        }
+
+        // Define associated psphot input/output files
+        if (!psphotDefineFiles(config, psphotInput)) {
+            psError(PSPHOT_ERR_CONFIG, false,
+                    "Trouble defining the additional input/output files for psphot");
             return false;
         }
Index: trunk/ppStack/src/ppStackLoop.c
===================================================================
--- trunk/ppStack/src/ppStackLoop.c	(revision 14811)
+++ trunk/ppStack/src/ppStackLoop.c	(revision 14834)
@@ -8,5 +8,4 @@
 #include <psmodules.h>
 #include <ppStats.h>
-#include <psphot.h>
 
 #include "ppStack.h"
@@ -38,6 +37,4 @@
         return false;
     }
-
-    bool doPhotom = psMetadataLookupBool(&mdok, config->arguments, "PHOTOM"); // perform photometry
 
     pmFPAview *view = pmFPAviewAlloc(0); // Pointer into FPA hierarchy
@@ -83,11 +80,4 @@
                 }
 
-		if (doPhotom) {
-		  if (!psphotReadout (config, view)) {
-                    psError(psErrorCodeLast(), false, "failure in psphotReadout for stacked image\n");
-                    return false;
-		  }
-		}
-
                 if (!pmFPAfileIOChecks(config, view, PM_FPA_BEFORE)) {
                     return false;
Index: trunk/ppStack/src/ppStackReadout.c
===================================================================
--- trunk/ppStack/src/ppStackReadout.c	(revision 14811)
+++ trunk/ppStack/src/ppStackReadout.c	(revision 14834)
@@ -6,4 +6,5 @@
 #include <pslib.h>
 #include <psmodules.h>
+#include <psphot.h>
 
 #include "ppStack.h"
@@ -18,4 +19,5 @@
 {
     // Get the recipe values
+    bool mdok;                          // Status of MD lookup
     int iter = psMetadataLookupS32(NULL, config->arguments, "ITER"); // Rejection iterations
     float combineRej = psMetadataLookupF32(NULL, config->arguments, "COMBINE.REJ"); // Combination threshold
@@ -23,4 +25,5 @@
     psMaskType maskBlank = psMetadataLookupU8(NULL, config->arguments, "MASK.BLANK"); // Mask for blank reg.
     float threshold = psMetadataLookupF32(NULL, config->arguments, "THRESHOLD.MASK"); // Threshold for mask deconvolution
+    bool photometry = psMetadataLookupBool(&mdok, config->arguments, "PHOTOMETRY"); // Perform photometry?
 
     // Get the output target
@@ -317,4 +320,12 @@
     psFree(cellList);
 
+    if (photometry && !psphotReadout(config, view)) {
+        psError(psErrorCodeLast(), false, "Unable to perform photometry on stacked image.\n");
+        return false;
+    }
+
+
+
+
     psFree(stack);
     psFree(outRO);                      // Drop reference
