From 0269c5766c3441346ae49515e25fadb37c062a96 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien.villemot@ens.fr>
Date: Thu, 18 Nov 2010 11:21:20 +0100
Subject: [PATCH] Preprocessor: max lead/lags in the model are no longer
 affected by lead/lags on parameters (closes #153)

---
 DynamicModel.cc | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/DynamicModel.cc b/DynamicModel.cc
index 1ac138e1..19150e4a 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)
-- 
GitLab