diff --git a/src/main/java/teetime/stage/ObjectProducer.java b/src/main/java/teetime/stage/ObjectProducer.java
index 5e0c272ae74378ba108f9318bef9a358150ef843..a5267aed1b2004ce63c1b5bf853617798b9b426d 100644
--- a/src/main/java/teetime/stage/ObjectProducer.java
+++ b/src/main/java/teetime/stage/ObjectProducer.java
@@ -54,14 +54,11 @@ public final class ObjectProducer<T> extends AbstractProducerStage<T> {
 
 	@Override
 	protected void execute() {
-		T newObject = this.inputObjectCreator.create();
-		this.numInputObjects--;
-
-		outputPort.send(newObject);
-
-		if (this.numInputObjects == 0) {
-			this.terminate();
+		for (int i = 0; i < numInputObjects; i++) {
+			T newObject = this.inputObjectCreator.create();
+			outputPort.send(newObject);
 		}
+		this.terminate();
 	}
 
 }
diff --git a/src/test/java/teetime/stage/ObjectProducerTest.java b/src/test/java/teetime/stage/ObjectProducerTest.java
index 242060a629ad28f67b9677318bb5670f74ef95c4..fc909882e2e6cf301d1a6e032e7fbc6e70a6790b 100644
--- a/src/test/java/teetime/stage/ObjectProducerTest.java
+++ b/src/test/java/teetime/stage/ObjectProducerTest.java
@@ -43,6 +43,7 @@ public class ObjectProducerTest {
 		assertThat(results, contains(1, 2, 3));
 	}
 
+	@Test
 	public void producerShouldSendNothingIfSpecified() {
 		final List<Integer> results = new ArrayList<Integer>();
 		final ObjectProducer<Integer> producer = new ObjectProducer<Integer>(0, new Generator());