Index: /trunk/ppStack/src/ppStack.h
===================================================================
--- /trunk/ppStack/src/ppStack.h	(revision 23191)
+++ /trunk/ppStack/src/ppStack.h	(revision 23192)
@@ -82,5 +82,6 @@
 pmPSF *ppStackPSF(const pmConfig *config, // Configuration
                   int numCols, int numRows, // Size of image
-                  const psArray *psfs   // List of input PSFs
+                  const psArray *psfs,  // List of input PSFs
+                  const psVector *inputMask // Mask for inputs
     );
 
Index: /trunk/ppStack/src/ppStackLoop.c
===================================================================
--- /trunk/ppStack/src/ppStackLoop.c	(revision 23191)
+++ /trunk/ppStack/src/ppStackLoop.c	(revision 23192)
@@ -368,5 +368,5 @@
 
         // Generate target PSF
-        targetPSF = ppStackPSF(config, numCols, numRows, psfs);
+        targetPSF = ppStackPSF(config, numCols, numRows, psfs, inputMask);
         psFree(psfs);
         if (!targetPSF) {
Index: /trunk/ppStack/src/ppStackPSF.c
===================================================================
--- /trunk/ppStack/src/ppStackPSF.c	(revision 23191)
+++ /trunk/ppStack/src/ppStackPSF.c	(revision 23192)
@@ -9,5 +9,6 @@
 #include "ppStack.h"
 
-pmPSF *ppStackPSF(const pmConfig *config, int numCols, int numRows, const psArray *psfs)
+pmPSF *ppStackPSF(const pmConfig *config, int numCols, int numRows,
+                  const psArray *psfs, const psVector *inputMask)
 {
     // Get the recipe values
@@ -19,4 +20,11 @@
     const char *psfModel = psMetadataLookupStr(NULL, recipe, "PSF.MODEL"); // Model for PSF
     int psfOrder = psMetadataLookupS32(NULL, recipe, "PSF.ORDER"); // Spatial order for PSF
+
+    for (int i = 0; i < psfs->n; i++) {
+        if (inputMask->data.U8[i]) {
+            psFree(psfs->data[i]);
+            psfs->data[i] = NULL;
+        }
+    }
 
     // Solve for the target PSF
