diff --git a/src/ExprNode.cc b/src/ExprNode.cc
index 81ba65f4aff9720153b3817bd7932ea5aa3c7ae4..30591012329ca6b459cf5fe8f0adde1688c528a4 100644
--- a/src/ExprNode.cc
+++ b/src/ExprNode.cc
@@ -1436,10 +1436,11 @@ VariableNode::computeChainRuleDerivative(int deriv_id,
       [[fallthrough]];
     case SymbolType::endogenous:
     case SymbolType::parameter:
-      if (deriv_id == datatree.getDerivID(symb_id, lag))
+      if (int my_deriv_id {datatree.getDerivID(symb_id, lag)};
+          deriv_id == my_deriv_id)
         return datatree.One;
       // If there is in the equation a recursive variable we could use a chaine rule derivation
-      else if (auto it = recursive_variables.find(datatree.getDerivID(symb_id, lag));
+      else if (auto it = recursive_variables.find(my_deriv_id);
                it != recursive_variables.end())
         return it->second->arg2->getChainRuleDerivative(deriv_id, recursive_variables, cache);
       else