Index: /trunk/ppSub/src/ppSubCamera.c
===================================================================
--- /trunk/ppSub/src/ppSubCamera.c	(revision 17818)
+++ /trunk/ppSub/src/ppSubCamera.c	(revision 17819)
@@ -142,5 +142,5 @@
             return false;
         }
-        if (input->type != PM_FPA_FILE_IMAGE) {
+        if (psphot->type != PM_FPA_FILE_IMAGE) {
             psError(PS_ERR_IO, true, "PSPHOT.INPUT is not of type IMAGE");
             return false;
@@ -151,4 +151,17 @@
             return false;
         }
+
+        // Internal-ish file for getting the PSF from the matched addition
+        pmFPAfile *psf = pmFPAfileDefineSkycell(config, output->fpa, "PSPHOT.PSF.LOAD");
+        if (!psf) {
+            psError(PS_ERR_IO, false, "Failed to build FPA from PSPHOT.PSF.LOAD");
+            return false;
+        }
+        if (psf->type != PM_FPA_FILE_PSF) {
+            psError(PS_ERR_IO, true, "PSPHOT.PSF.LOAD is not of type PSF");
+            return false;
+        }
+        pmFPAfileActivate(config->files, false, "PSPHOT.PSF.LOAD");
+
     }
 
Index: /trunk/ppSub/src/ppSubReadout.c
===================================================================
--- /trunk/ppSub/src/ppSubReadout.c	(revision 17818)
+++ /trunk/ppSub/src/ppSubReadout.c	(revision 17819)
@@ -213,5 +213,5 @@
             return false;
         }
-        const char *breakpoint = psMetadataLookupStr(NULL, recipe, "BREAK_POINT"); // Current break point
+        const char *breakpoint = psMetadataLookupStr(&mdok, recipe, "BREAK_POINT"); // Current break point
         psMetadataAddStr(recipe, PS_LIST_TAIL, "BREAK_POINT", PS_META_REPLACE,
                          "ALTERED break point for psphot operations", "PSFMODEL");
@@ -223,6 +223,29 @@
         }
 
-        psMetadataAddStr(recipe, PS_LIST_TAIL, "BREAK_POINT", PS_META_REPLACE,
-                         "RESTORED break point for psphot operations", breakpoint);
+        if (breakpoint) {
+            psMetadataAddStr(recipe, PS_LIST_TAIL, "BREAK_POINT", PS_META_REPLACE,
+                             "RESTORED break point for psphot operations", breakpoint);
+        }
+
+        // Blow away the sources psphot found --- they're irrelevant for the subtraction
+        pmReadout *photRO = pmFPAviewThisReadout(view, photFile->fpa); // Readout with sources
+        psMetadataRemoveKey(photRO->analysis, "PSPHOT.SOURCES");
+        psMetadataRemoveKey(photRO->analysis, "PSPHOT.HEADER");
+
+        pmPSF *psf = psMetadataLookupPtr(NULL, photRO->parent->parent->analysis, "PSPHOT.PSF"); // PSF
+        if (!psf) {
+            psError(PS_ERR_UNEXPECTED_NULL, true, "Unable to find PSF from psphot");
+            return false;
+        }
+
+        pmCell *psfCell = pmFPAfileThisCell(config->files, view, "PSPHOT.PSF.LOAD");
+        if (!psfCell) {
+            psError(PS_ERR_UNEXPECTED_NULL, true, "Unable to find file PSPHOT.PSF.LOAD");
+            return false;
+        }
+        pmReadout *psfRO = pmReadoutAlloc(psfCell);
+        psMetadataAddPtr(psfRO->parent->parent->analysis, PS_LIST_TAIL, "PSPHOT.PSF", PS_DATA_UNKNOWN,
+                         "PSF from matched addition", psf);
+        psFree(psfRO);                  // Drop reference
     }
 
@@ -309,4 +332,5 @@
 
         pmFPAfileActivate(config->files, false, "PSPHOT.INPUT");
+        pmFPAfileActivate(config->files, false, "PSPHOT.LOAD.PSF");
 
         if (stats) {
