Index: trunk/pois/src/poisRejectStamps.c
===================================================================
--- trunk/pois/src/poisRejectStamps.c	(revision 3803)
+++ trunk/pois/src/poisRejectStamps.c	(revision 3813)
@@ -6,8 +6,8 @@
 #define SQUARE(x) ((x)*(x))
 
-bool poisRejectStamps(psArray *stamps,	// Array of stamps
-		      psImage *mask,	// Mask image
-		      const psVector *deviations, // Vector of deviations for the stamps
-		      const poisConfig *config // Configuration
+psList *restrict poisRejectStamps(psArray *stamps, // Array of stamps
+				  psImage *mask,	// Mask image
+				  const psVector *deviations, // Vector of deviations for the stamps
+				  const poisConfig *config // Configuration
     )
 {
@@ -21,5 +21,4 @@
     assert(deviations->type.type == PS_TYPE_F32);
 
-    bool masked = false;		// Have we masked any stamps?
     psVector *devMask = psVectorAlloc(stamps->n, PS_TYPE_U8); // Mask for statistics
 
@@ -30,5 +29,5 @@
 	poisStamp *stamp = stamps->data[i];	// The stamp
 	// Only interested in the stamps that we're actually using
-	if (stamp->status == POIS_STAMP_USED) {
+	if (stamp != NULL && stamp->status == POIS_STAMP_USED) {
 	    meanDev += SQUARE(deviations->data.F32[i]);
 	    numDev++;
@@ -41,8 +40,12 @@
 
     // Reject stamps
+    psList *rejected = NULL;		// rejected stamps
     for (int s = 0; s < deviations->n; s++) {
 	poisStamp *stamp = stamps->data[s];
+	if (stamp == NULL) {
+	    continue;
+	}
+	
 	if (stamp->status == POIS_STAMP_USED && fabsf(deviations->data.F32[s]) > limit) {
-	    masked = true;
 	    psTrace("pois.rejectStamps", 1, "Rejecting stamp %d (%d,%d): %f\n", s, stamp->x, stamp->y,
 		    deviations->data.F32[s]);
@@ -56,5 +59,13 @@
 	    
 	    // Mark stamp for replacement
-	    stamp->status = POIS_STAMP_RESET;
+	    stamps->data[s] = NULL;
+	    
+	    if (rejected == NULL) {
+		rejected = psListAlloc(stamp);
+	    } else {
+		bool failed = psListAdd(rejected, PS_LIST_TAIL, stamp);
+		assert(!failed);
+	    }
+	    psFree(stamp);
 	} // Bad stamps
     } // Iterating over stamps
@@ -62,4 +73,4 @@
     psFree(devMask);
 
-    return masked;
+    return rejected;
 }
