diff --git a/DynamicModel.cc b/DynamicModel.cc
index 1ac138e163e52083173eb65601c332d7fd127f57..19150e4ac686511c6a9a0a1b26647a1e6f6d9003 100644
--- a/DynamicModel.cc
+++ b/DynamicModel.cc
@@ -3111,10 +3111,14 @@ DynamicModel::computeDerivIDs()
       int lag = it->second;
       SymbolType type = symbol_table.getType(it->first);
 
-      // Setting maximum and minimum lags
-      if (max_lead < lag)
+      /* Setting maximum and minimum lags.
+
+         We don't want these to be affected by lead/lags on parameters: they
+         are accepted for facilitating variable flipping, but are simply
+         ignored. */
+      if (max_lead < lag && type != eParameter)
         max_lead = lag;
-      else if (-max_lag > lag)
+      else if (-max_lag > lag && type != eParameter)
         max_lag = -lag;
 
       switch (type)