Index: trunk/psModules/src/imcombine/pmSubtraction.c
===================================================================
--- trunk/psModules/src/imcombine/pmSubtraction.c	(revision 13406)
+++ trunk/psModules/src/imcombine/pmSubtraction.c	(revision 13511)
@@ -4,6 +4,6 @@
  *  @author GLG, MHPCC
  *
- *  @version $Revision: 1.11 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-05-17 04:13:19 $
+ *  @version $Revision: 1.12 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-05-24 21:17:01 $
  *
  *  Copyright 2004-2007 Institute for Astronomy, University of Hawaii
@@ -430,13 +430,30 @@
             psFree(polyValues);
 
-            // Fill in lower diagonal of symmetric matrix
+            // Fill in lower diagonal of symmetric matrix, while checking for bad values
+            bool bad = false;           // Are there bad values?
             for (int i = 0; i < numKernels; i++) {
                 for (int j = 0; j < i; j++) {
+                    if (!isfinite(stampMatrix->data.F64[j][i])) {
+                        bad = true;
+                    }
                     stampMatrix->data.F64[i][j] = stampMatrix->data.F64[j][i];
                 }
+                if (!isfinite(stampMatrix->data.F64[i][bgIndex]) ||
+                    !isfinite(stampMatrix->data.F64[i][i]) ||
+                    !isfinite(stampVector->data.F64[i])) {
+                    bad = true;
+                }
                 stampMatrix->data.F64[bgIndex][i] = stampMatrix->data.F64[i][bgIndex];
             }
-
-            stamp->status = PM_SUBTRACTION_STAMP_USED;
+            if (!isfinite(stampVector->data.F64[bgIndex])) {
+                bad = true;
+            }
+
+            if (bad) {
+                stamp->status = PM_SUBTRACTION_STAMP_REJECTED;
+                psTrace("psModules.imcombine", 3, "Rejecting stamp %d because of bad equation\n", i);
+            } else {
+                stamp->status = PM_SUBTRACTION_STAMP_USED;
+            }
 
             if (psTraceGetLevel("psModules.imcombine.equation") >= 10) {
@@ -633,5 +650,5 @@
         if (stamp->status == PM_SUBTRACTION_STAMP_USED && deviations->data.F32[i] > limit) {
             // Mask out the stamp in the image so you it's not found again
-            psTrace("psModules.imcombine", 3, "Rejecting stamp %d\n", i);
+            psTrace("psModules.imcombine", 3, "Clipping stamp %d\n", i);
             numRejected++;
             for (int y = stamp->y - footprint; y <= stamp->y + footprint; y++) {
