diff --git a/src/scheduler/Scheduler.cpp b/src/scheduler/Scheduler.cpp
index 1c41afd4a2765d364b0ce6035bf50d732179fe1c..d383a199b525b20885130fc3a66269486674d47c 100644
--- a/src/scheduler/Scheduler.cpp
+++ b/src/scheduler/Scheduler.cpp
@@ -195,7 +195,9 @@ std::vector<std::shared_ptr<Aidge::Scheduler::StaticSchedulingElement>> Aidge::S
             // be put back in the consumers list once the remaining consumers
             // have been exhausted.
             bool isStillConsumer = false;
-            for (IOIndex_t inputIdx = 0; inputIdx < consumer->nbInputs(); ++inputIdx) {
+            // Only look for data inputs. If no data is available on data input,
+            // by definition, no parameter can be consumed on parameter inputs.
+            for (IOIndex_t inputIdx = 0; inputIdx < consumer->nbData(); ++inputIdx) {
                 AIDGE_LOG_CONTEXT("Consumer node {} input #{}", namePtrTable.at(consumer), inputIdx);
 
                 if (consumer->getOperator()->getNbConsumedData(inputIdx) <