diff --git a/src/ExprNode.cc b/src/ExprNode.cc
index c8e4c4b3575b85cf01966934f2e6f23ad35df7c1..1da16358e50edc874c114cc3248ef935545f9fa6 100644
--- a/src/ExprNode.cc
+++ b/src/ExprNode.cc
@@ -868,7 +868,7 @@ VariableNode::prepareForDerivation()
     case SymbolType::trend:
     case SymbolType::logTrend:
       // In static models, exogenous and trends do not have deriv IDs
-      if (dynamic_cast<StaticModel *>(&datatree))
+      if (!datatree.isDynamic())
         break;
       [[fallthrough]];
     case SymbolType::endogenous:
@@ -907,7 +907,7 @@ VariableNode::computeDerivative(int deriv_id)
     case SymbolType::trend:
     case SymbolType::logTrend:
       // In static models, exogenous and trends do not have deriv IDs
-      if (dynamic_cast<StaticModel *>(&datatree))
+      if (!datatree.isDynamic())
         return datatree.Zero;
       [[fallthrough]];
     case SymbolType::endogenous:
@@ -1431,7 +1431,7 @@ VariableNode::computeChainRuleDerivative(int deriv_id,
     case SymbolType::trend:
     case SymbolType::logTrend:
       // In static models, exogenous and trends do not have deriv IDs
-      if (dynamic_cast<StaticModel *>(&datatree))
+      if (!datatree.isDynamic())
         return datatree.Zero;
       [[fallthrough]];
     case SymbolType::endogenous: