Index: trunk/ppSub/src/ppSubLoop.c
===================================================================
--- trunk/ppSub/src/ppSubLoop.c	(revision 30619)
+++ trunk/ppSub/src/ppSubLoop.c	(revision 31435)
@@ -107,9 +107,16 @@
 
     // XXX if it exists, use the POS1, POS2 successs for the FWHMs
-    if (!ppSubMatchPSFs(data)) {
+    psMetadata *recipe = psMetadataLookupPtr(NULL, config->recipes, PPSUB_RECIPE);
+    bool noConvolve = psMetadataLookupBool(NULL, recipe, "NOCONVOLVE"); // Do not use convolved images.
+    if (noConvolve) {
+      psWarning("not matching PSFs because NOCONVOLVE is TRUE\n");
+    } else {
+      if (!ppSubMatchPSFs(data)) {
         psError(psErrorCodeLast(), false, "Unable to match PSFs.");
         success = false;
         goto ESCAPE;
-    }
+      }
+    }
+
 
     if (data->quality) {
@@ -132,4 +139,5 @@
 
     // Close input files
+    if (!noConvolve) {
     if (!ppSubFilesIterateUp(config, PPSUB_FILES_INPUT)) {
         psError(PPSUB_ERR_IO, false, "Unable to close input files.");
@@ -137,5 +145,5 @@
         goto ESCAPE;
     }
-
+    }
     if (!ppSubLowThreshold(data)) {
         psError(psErrorCodeLast(), false, "Unable to threshold images.");
@@ -157,4 +165,5 @@
     }
 
+    if (!noConvolve) {
     if (!data->quality && !ppSubMakePSF(data)) {
         psError(psErrorCodeLast(), false, "Unable to generate PSF.");
@@ -162,5 +171,5 @@
         goto ESCAPE;
     }
-
+    }
     // Now we've got a PSF, blow away detections in case they're confused with real output detections
     {
@@ -187,5 +196,12 @@
     }
     // dumpout(config, "diff.2a.fits");
-
+    if (noConvolve) {
+      if (!ppSubFilesIterateUp(config, PPSUB_FILES_INPUT)) {
+	psError(PPSUB_ERR_IO, false, "Unable to close input files.");
+	success = false;
+	goto ESCAPE;
+      }
+    }
+    
     // Higher order background subtraction using psphot
     if (!ppSubBackground(config)) {
