Index: trunk/ppSub/src/ppSubMakePSF.c
===================================================================
--- trunk/ppSub/src/ppSubMakePSF.c	(revision 23688)
+++ trunk/ppSub/src/ppSubMakePSF.c	(revision 23740)
@@ -22,8 +22,11 @@
 #include "ppSub.h"
 
-bool ppSubMakePSF(pmConfig *config, ppSubData *data, const pmFPAview *view)
+bool ppSubMakePSF(pmConfig *config, ppSubData *data)
 {
     psAssert(config, "Require configuration");
-    psAssert(view, "Require view");
+
+    if (!data->photometry) {
+        return true;
+    }
 
     psTimerStart("PPSUB_PHOT");
@@ -44,4 +47,5 @@
     pmReadout *minuend = NULL;          // Image that will be positive following subtraction
     pmFPAfile *minuendFile = NULL;      // File for minuend image
+    pmFPAview *view = ppSubViewReadout(); // View to readout
     if (reverse) {
         minuend = pmFPAfileThisReadout(config->files, view, "PPSUB.REF.CONV");
@@ -53,7 +57,8 @@
 
 #if 1
+    pmFPAfile *photFile = psMetadataLookupPtr(&mdok, config->files, "PSPHOT.INPUT"); // Photometry file
+#if 0
+    pmReadout *photRO = pmFPAviewThisReadout(view, photFile->fpa); // Readout to photometer
     pmReadout *template = minuend;
-    pmFPAfile *photFile = psMetadataLookupPtr(&mdok, config->files, "PSPHOT.INPUT"); // Photometry file
-    pmReadout *photRO = pmFPAviewThisReadout(view, photFile->fpa); // Readout to photometer
     if (!photRO) {
         pmCell *cell = pmFPAviewThisCell(view, photFile->fpa); // Cell to photometer
@@ -74,4 +79,17 @@
     }
 #else
+    if (!pmFPACopy(photFile->fpa, minuendFile->fpa)) {
+        psError(PS_ERR_UNKNOWN, false, "Unable to copy FPA for photometry");
+        psFree(view);
+        return false;
+    }
+    pmReadout *photRO = pmFPAviewThisReadout(view, photFile->fpa); // Readout to photometer
+    if (psMetadataLookup(photRO->analysis, "PSPHOT.SOURCES")) {
+        psMetadataRemoveKey(photRO->analysis, "PSPHOT.SOURCES");
+    }
+#endif
+
+
+#else
     // Supply the minuend pmFPAfile to psphot as PSPHOT.INPUT:
     psMetadataAddPtr(config->files, PS_LIST_TAIL, "PSPHOT.INPUT", PS_DATA_UNKNOWN | PS_META_REPLACE,
@@ -87,5 +105,6 @@
         psErrorStackPrint(stderr, "Unable to determine PSF");
         psWarning("Unable to determine PSF --- suspect bad data quality.");
-        ppSubDataQuality(config, data, PSPHOT_ERR_PSF, PPSUB_FILES_PHOT);
+        ppSubDataQuality(config, data, PSPHOT_ERR_PSF, PPSUB_FILES_PHOT_SUB | PPSUB_FILES_PHOT_INV);
+        psFree(view);
         return true;
     }
@@ -93,4 +112,5 @@
     // Record the FWHM in the output header
     pmReadout *outRO = pmFPAfileThisReadout(config->files, view, "PPSUB.OUTPUT"); // Output readout
+    psFree(view);
     pmHDU *hdu = pmHDUFromCell(outRO->parent); // HDU with header
     psMetadataItemSupplement(hdu->header, psphotRecipe, "FWHM_MAJ");
@@ -100,4 +120,7 @@
     psMetadataRemoveKey(photRO->analysis, "PSPHOT.HEADER");
 
+    data->psf = psMemIncrRefCounter(psMetadataLookupPtr(NULL, photRO->parent->parent->analysis,
+                                                        "PSPHOT.PSF"));
+
     return true;
 }
