From 7c9f272e157a6505d88e744046f94dcb00468ec5 Mon Sep 17 00:00:00 2001
From: Houtan Bastani <houtan@dynare.org>
Date: Tue, 5 Mar 2019 12:42:37 +0100
Subject: [PATCH] always substitute diffs of expressions that contain leads.
 closes #21

---
 src/DataTree.cc | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/DataTree.cc b/src/DataTree.cc
index 7a60c67d..84b0faaf 100644
--- a/src/DataTree.cc
+++ b/src/DataTree.cc
@@ -336,6 +336,9 @@ DataTree::AddPowerDeriv(expr_t iArg1, expr_t iArg2, int powerDerivOrder)
 expr_t
 DataTree::AddDiff(expr_t iArg1)
 {
+  if (iArg1->maxLead() > 0)
+    // Issue #21: always substitute diffs with lags
+    return AddMinus(iArg1, iArg1->decreaseLeadsLags(1));
   return AddUnaryOp(UnaryOpcode::diff, iArg1);
 }
 
-- 
GitLab