Index: /trunk/psphot/src/psphot.h
===================================================================
--- /trunk/psphot/src/psphot.h	(revision 34135)
+++ /trunk/psphot/src/psphot.h	(revision 34136)
@@ -419,4 +419,6 @@
 // bool loadKernel (pmConfig *config, pmReadout *readoutCnv, psphotStackOptions *options, int index);
 
+bool psphotStackSetInputsToSkip(pmConfig *config, const pmFPAview *view, const char *filerule, bool set) ;
+
 bool psphotStackRenormaliseVariance(const pmConfig *config, pmReadout *readout);
 
Index: /trunk/psphot/src/psphotChoosePSF.c
===================================================================
--- /trunk/psphot/src/psphotChoosePSF.c	(revision 34135)
+++ /trunk/psphot/src/psphotChoosePSF.c	(revision 34136)
@@ -47,4 +47,9 @@
     if (psMetadataLookupPtr (&status, readout->analysis, "PSPHOT.PSF")) {
         psLogMsg ("psphot", PS_LOG_DETAIL, "psf model supplied for input file %d", index);
+        return true;
+    }
+
+    if (psMetadataLookupBool (&status, readout->analysis, "PSPHOT.SKIP.INPUT")) {
+        psLogMsg ("psphot", PS_LOG_DETAIL, "skipping choose PSF for input file %d", index);
         return true;
     }
Index: /trunk/psphot/src/psphotFitSourcesLinear.c
===================================================================
--- /trunk/psphot/src/psphotFitSourcesLinear.c	(revision 34135)
+++ /trunk/psphot/src/psphotFitSourcesLinear.c	(revision 34136)
@@ -50,4 +50,10 @@
         pmReadout *readout = pmFPAviewThisReadout(view, file->fpa);
         psAssert (readout, "missing readout?");
+
+        if (psMetadataLookupBool (&status, readout->analysis, "PSPHOT.SKIP.INPUT")) {
+            psLogMsg ("psphot", PS_LOG_DETAIL, "skipping fit sources for input file %d", i);
+            continue;
+        }
+
 
         pmDetections *detections = psMetadataLookupPtr (&status, readout->analysis, "PSPHOT.DETECTIONS");
Index: /trunk/psphot/src/psphotRadialApertures.c
===================================================================
--- /trunk/psphot/src/psphotRadialApertures.c	(revision 34135)
+++ /trunk/psphot/src/psphotRadialApertures.c	(revision 34136)
@@ -71,4 +71,10 @@
     pmReadout *readout = pmFPAviewThisReadout(view, file->fpa);
     psAssert (readout, "missing readout?");
+    
+    if (psMetadataLookupBool (&status, readout->analysis, "PSPHOT.SKIP.INPUT")) {
+        psLogMsg ("psphot", PS_LOG_DETAIL, "skipping radial aptertures for input file %d", index);
+        return true;
+    }
+
 
     pmDetections *detections = psMetadataLookupPtr (&status, readout->analysis, "PSPHOT.DETECTIONS");
Index: /trunk/psphot/src/psphotReplaceUnfit.c
===================================================================
--- /trunk/psphot/src/psphotReplaceUnfit.c	(revision 34135)
+++ /trunk/psphot/src/psphotReplaceUnfit.c	(revision 34136)
@@ -55,4 +55,9 @@
     pmReadout *readout = pmFPAviewThisReadout(view, file->fpa);
     psAssert (readout, "missing readout?");
+
+    if (psMetadataLookupBool (&status, readout->analysis, "PSPHOT.SKIP.INPUT")) {
+        psLogMsg ("psphot", PS_LOG_DETAIL, "skipping replace all sources for input file %d", index);
+        return true;
+    }
 
     pmDetections *detections = psMetadataLookupPtr (&status, readout->analysis, "PSPHOT.DETECTIONS");
@@ -304,4 +309,10 @@
     psAssert (readout, "missing readout?");
 
+    if (psMetadataLookupBool (&status, readout->analysis, "PSPHOT.SKIP.INPUT")) {
+        psLogMsg ("psphot", PS_LOG_DETAIL, "skipping reset models for input file %d", index);
+        return true;
+    }
+
+
     // XXX the sources have already been copied (merge into here?)
     pmDetections *detections = psMetadataLookupPtr (&status, readout->analysis, "PSPHOT.DETECTIONS");
Index: /trunk/psphot/src/psphotStackMatchPSFs.c
===================================================================
--- /trunk/psphot/src/psphotStackMatchPSFs.c	(revision 34135)
+++ /trunk/psphot/src/psphotStackMatchPSFs.c	(revision 34136)
@@ -87,9 +87,4 @@
     }
 
-    // copy the header data from Src to Out
-    // pmHDU *hduSrc = pmHDUFromReadout(readoutSrc);
-    // psAssert (hduSrc, "input missing hdu?");
-
-
     // set NAN pixels to 'SAT'
     psImageMaskType maskSat = pmConfigMaskGet("SAT", config);
@@ -116,9 +111,14 @@
     // save the output fwhm values in the readout->analysis.  we may have / will have multiple output PSF sizes,
     // so we save this in a vector.  if the vector is not yet defined, create it
+    // Skip this if the readout deconvolution fraction was over the limit.
     // NOTE: fwhmValues as defined here has 1 + nMatched PSF : 0 == unmatched
     psVector *fwhmValues = psVectorAllocEmpty(10, PS_TYPE_F32);
     psVectorAppend(fwhmValues, NAN); // XXX this corresponds to the unmatched image set
-    for (int i = 0; i < options->targetSeeing->n; i++) {
-	psVectorAppend(fwhmValues, options->targetSeeing->data.F32[i]);
+
+    bool overLimit = psMetadataLookupBool(NULL, readoutOut->analysis, "DECONV.OVERLIMIT");
+    if (!overLimit) {
+        for (int i = 0; i < options->targetSeeing->n; i++) {
+            psVectorAppend(fwhmValues, options->targetSeeing->data.F32[i]);
+        }
     }
     psMetadataAddVector(readoutSrc->analysis, PS_LIST_TAIL, "STACK.PSF.FWHM.VALUES", PS_META_REPLACE, "PSF sizes", fwhmValues);
Index: /trunk/psphot/src/psphotStackMatchPSFsNext.c
===================================================================
--- /trunk/psphot/src/psphotStackMatchPSFsNext.c	(revision 34135)
+++ /trunk/psphot/src/psphotStackMatchPSFsNext.c	(revision 34136)
@@ -7,18 +7,23 @@
     int nRadialEntries = 0;
 
-    // find the currently selected readout
-    pmFPAfile *file = pmFPAfileSelectSingle(config->files, filerule, 0); // File of interest
-    psAssert (file, "missing file?");
+    // find the numer of fwhmValues in the first non-skipped input
+    int num = psphotFileruleCount(config, filerule);
+    for (int i=0; i<num; i++) {
+        pmFPAfile *file = pmFPAfileSelectSingle(config->files, filerule, i); // File of interest
+        psAssert (file, "missing file?");
     
-    pmReadout *readout = pmFPAviewThisReadout(view, file->fpa);
-    psAssert (readout, "missing readout?");
-    
-    bool status = false;
-    psVector *fwhmValues = psMetadataLookupVector(&status, readout->analysis, "STACK.PSF.FWHM.VALUES");
-    if (!fwhmValues) {
-	return 1;
+        pmReadout *readout = pmFPAviewThisReadout(view, file->fpa);
+        psAssert (readout, "missing readout?");
+        bool status = false;
+        if (!psMetadataLookupBool (&status, readout->analysis, "PSPHOT.SKIP.INPUT")) {
+            psVector *fwhmValues = psMetadataLookupVector(&status, readout->analysis, "STACK.PSF.FWHM.VALUES");
+            if (fwhmValues) {
+                nRadialEntries = fwhmValues->n;
+            } else {
+                nRadialEntries = 1;
+            }
+            break;
+        }
     }
-    
-    nRadialEntries = fwhmValues->n;
     return nRadialEntries;
 }
@@ -60,4 +65,9 @@
     pmReadout *readout = pmFPAviewThisReadout(view, file->fpa);
     psAssert (readout, "missing readout?");
+
+    if (psMetadataLookupBool (&status, readout->analysis, "PSPHOT.SKIP.INPUT")) {
+        psLogMsg("psphot", PS_LOG_INFO, "skipping smooth %d to next psf", index);
+        return true;
+    }
 
     psLogMsg("psphot", PS_LOG_INFO, "smooth %d to next psf", index);
Index: /trunk/psphot/src/psphotStackMatchPSFsUtils.c
===================================================================
--- /trunk/psphot/src/psphotStackMatchPSFsUtils.c	(revision 34135)
+++ /trunk/psphot/src/psphotStackMatchPSFsUtils.c	(revision 34136)
@@ -310,6 +310,14 @@
     float deconv = psMetadataLookupF32(NULL, readoutOut->analysis, PM_SUBTRACTION_ANALYSIS_DECONV_MAX); // Max deconvolution fraction
     if (deconv > deconvLimit) {
+#if (1)
+        // XXX: don't reject the image set 
+	psWarning("Maximum deconvolution fraction (%f) exceeds limit (%f) --- rejecting image for matched psf analysis%d\n", deconv, deconvLimit, index);
+        psMetadataAddBool(readoutOut->analysis, PS_LIST_TAIL, "DECONV.OVERLIMIT", PS_META_REPLACE, "", true);
+#else
 	psWarning("Maximum deconvolution fraction (%f) exceeds limit (%f) --- rejecting image %d\n", deconv, deconvLimit, index);
 	goto escape;
+#endif
+    } else {
+        psMetadataAddBool(readoutOut->analysis, PS_LIST_TAIL, "DECONV.OVERLIMIT", PS_META_REPLACE, "", false);
     }
 
@@ -461,2 +469,29 @@
     return optWidths;
 }
+
+// Set input to be skipped if the decovolution fraction was overlimit. Use for radial apertures
+// This interface can be potentiall be extended for other uses
+bool psphotStackSetInputsToSkip(pmConfig *config, const pmFPAview *view, const char *filerule, bool set) {
+    int num = psphotFileruleCount(config, filerule);
+    bool status;
+    int chisqNum = psMetadataLookupS32 (&status, config->arguments, "PSPHOT.CHISQ.NUM");
+    if (!status) chisqNum = -1;
+    for (int i = 0; i < num; i++) {
+        if (i == chisqNum) {
+            continue;
+        }
+        pmFPAfile *file = pmFPAfileSelectSingle(config->files, filerule, i); // File of interest
+        psAssert (file, "missing file?");
+
+        pmReadout *readout = pmFPAviewThisReadout(view, file->fpa);
+        psAssert (readout, "missing readout?");
+        if (set) {
+            bool overLimit = psMetadataLookupBool(&status, readout->analysis, "DECONV.OVERLIMIT");
+            psMetadataAddBool(readout->analysis, PS_LIST_TAIL, "PSPHOT.SKIP.INPUT", PS_META_REPLACE, "Skip analysis", overLimit);
+        } else {
+            psMetadataAddBool(readout->analysis, PS_LIST_TAIL, "PSPHOT.SKIP.INPUT", PS_META_REPLACE, "Skip analysis", false);
+        }
+    }
+
+    return true;
+}
