diff --git a/src/main/java/teetime/framework/pipe/SpScPipe.java b/src/main/java/teetime/framework/pipe/SpScPipe.java
index 3160d38b9ffc116ba9ce8bb1e3e3aaa4a4e5c295..bf28520d020e10bba4df712d9a895efa6e5726d2 100644
--- a/src/main/java/teetime/framework/pipe/SpScPipe.java
+++ b/src/main/java/teetime/framework/pipe/SpScPipe.java
@@ -18,6 +18,7 @@ package teetime.framework.pipe;
 import teetime.framework.AbstractInterThreadPipe;
 import teetime.framework.InputPort;
 import teetime.framework.OutputPort;
+import teetime.framework.StageState;
 import teetime.util.concurrent.queue.ObservableSpScArrayQueue;
 
 public final class SpScPipe extends AbstractInterThreadPipe implements IMonitorablePipe {
@@ -44,8 +45,11 @@ public final class SpScPipe extends AbstractInterThreadPipe implements IMonitora
 	public boolean add(final Object element) {
 		// BETTER introduce a QueueIsFullStrategy
 		while (!this.queue.offer(element)) {
-			this.numWaits++;
 			// Thread.yield();
+			if (this.cachedTargetStage.getCurrentState() == StageState.TERMINATED) {
+				return false;
+			}
+			this.numWaits++;
 			try {
 				Thread.sleep(1);
 			} catch (InterruptedException e) {