Index: trunk/psModules/src/imcombine/pmSubtractionMatch.c
===================================================================
--- trunk/psModules/src/imcombine/pmSubtractionMatch.c	(revision 30739)
+++ trunk/psModules/src/imcombine/pmSubtractionMatch.c	(revision 30740)
@@ -667,4 +667,5 @@
             }
 
+	    int nTries = 0;
 	    bool tryAgain = true;
 	    while (tryAgain) {
@@ -677,7 +678,15 @@
 
 		// generate the window function from the set of stamps
+		// we attempt to set the window based on the measured kron radius, but the
+		// initial guess may be too small. allow the window to grow if the kron radius
+		// implies the need for a larger windon.  But only allow 2 additional tries
 		if (!pmSubtractionStampsGetWindow(&tryAgain, stamps, size)) {
 		    // if we failed, it might be due to the desired normWindow being larger than the current footprint.
 		    // in this case, just adjust the footprint and try again.
+		    if (tryAgain && (nTries >= 2)) {
+			// unrecoverable error
+			psError(PM_ERR_STAMPS, true, "Unable to get stamp window (failure to converge).");
+			goto MATCH_ERROR;
+		    }
 		    if (tryAgain) {
 			// keep the border constant
@@ -688,6 +697,7 @@
 			// we need to reconstruct everything, so just free the stamps here and retry
 			psFree(stamps);
+			nTries ++;
 		    } else {
-			// unrecoverable error
+			// unrecoverable error generated in pmSubtractionStampsGetWindow
 			psError(psErrorCodeLast(), false, "Unable to get stamp window.");
 			goto MATCH_ERROR;
