diff --git a/src/ComputingTasks.cc b/src/ComputingTasks.cc
index f3b3fa8040508ebcfff9bd32b7927a4ad714fb91..a400d9f29c23d384b8b2308ba62e296df9561976 100644
--- a/src/ComputingTasks.cc
+++ b/src/ComputingTasks.cc
@@ -294,7 +294,9 @@ void
 VarModelStatement::fillVarModelInfoFromEquations(vector<int> &eqnumber_arg, vector<int> &lhs_arg,
                                                  vector<set<pair<int, int> > > &rhs_arg,
                                                  vector<bool> &nonstationary_arg,
-                                                 vector<bool> &diff_arg, vector<int> &orig_diff_var_arg)
+                                                 vector<bool> &diff_arg,
+                                                 vector<int> &orig_diff_var_arg,
+                                                 int max_lag_arg)
 {
   eqnumber = eqnumber_arg;
   lhs = lhs_arg;
@@ -302,6 +304,7 @@ VarModelStatement::fillVarModelInfoFromEquations(vector<int> &eqnumber_arg, vect
   nonstationary = nonstationary_arg;
   diff = diff_arg;
   orig_diff_var = orig_diff_var_arg;
+  max_lag = max_lag_arg;
 
   // Order RHS vars by time (already ordered by equation tag)
   for (vector<set<pair<int, int> > >::const_iterator it = rhs_by_eq.begin();
@@ -363,15 +366,7 @@ VarModelStatement::writeOutput(ostream &output, const string &basename, bool min
       output << symbol_table.getTypeSpecificID(*it) + 1;
     }
   output << "];" << endl
-         << "options_.var.rhs.lag = [";
-  for (map<int, set<int> >::const_iterator it = rhs.begin();
-       it != rhs.end(); it++)
-    {
-      if (it != rhs.begin())
-        output << " ";
-      output << it->first;
-    }
-  output << "];" << endl
+         << "options_.var.max_lag = " << max_lag << ";" << endl
          << "options_.var.nonstationary = [";
   for (vector<bool>::const_iterator it = nonstationary.begin();
        it != nonstationary.end(); it++)
diff --git a/src/ComputingTasks.hh b/src/ComputingTasks.hh
index cb7052d2710656e28ae0eb85e111d698e8c7de2b..0da427d788f575f2831b8b4de6785379a77eeb3f 100644
--- a/src/ComputingTasks.hh
+++ b/src/ComputingTasks.hh
@@ -130,6 +130,7 @@ private:
   map<int, set<int > > rhs; // lag -> set< symb_id > (all vars that appear at a given lag)
   vector<set<pair<int, int> > > rhs_by_eq; // rhs by equation
   vector<bool> nonstationary, diff;
+  int max_lag;
 public:
   VarModelStatement(const SymbolList &symbol_list_arg,
                     const OptionsList &options_list_arg,
@@ -140,7 +141,8 @@ public:
   void fillVarModelInfoFromEquations(vector<int> &eqnumber_arg, vector<int> &lhs_arg,
                                      vector<set<pair<int, int> > > &rhs_arg,
                                      vector<bool> &nonstationary_arg,
-                                     vector<bool> &diff_arg, vector<int> &orig_diff_var_arg);
+                                     vector<bool> &diff_arg, vector<int> &orig_diff_var_arg,
+                                     int max_lag_arg);
   void getVarModelName(string &var_model_name) const;
   void getVarModelRHS(map<int, set<int > > &rhs_arg) const;
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc
index 50cc6d33f1c808bee7504420447fe444563e4ceb..42ccae5ca51627929a6a240b6095d9a6e9a88f98 100644
--- a/src/DynamicModel.cc
+++ b/src/DynamicModel.cc
@@ -3310,8 +3310,10 @@ DynamicModel::getVarModelVariablesFromEqTags(vector<string> &var_model_eqtags,
 }
 
 void
-DynamicModel::getVarLhsDiffInfo(vector<int> &eqnumber, vector<bool> &diff, vector<int> &orig_diff_var) const
+DynamicModel::getVarMaxLagAndLhsDiffAndInfo(vector<int> &eqnumber, vector<bool> &diff,
+                                            vector<int> &orig_diff_var, int &max_lag) const
 {
+  max_lag = 0;
   for (vector<int>::const_iterator it = eqnumber.begin();
        it != eqnumber.end(); it++)
     {
@@ -3320,6 +3322,7 @@ DynamicModel::getVarLhsDiffInfo(vector<int> &eqnumber, vector<bool> &diff, vecto
         {
           set<pair<int, int> > diff_set;
           equations[*it]->get_arg1()->collectDynamicVariables(eEndogenous, diff_set);
+
           if (diff_set.size() != 1)
             {
               cerr << "ERROR: problem getting variable for LHS diff operator in equation " << *it << endl;
@@ -3329,6 +3332,10 @@ DynamicModel::getVarLhsDiffInfo(vector<int> &eqnumber, vector<bool> &diff, vecto
         }
       else
         orig_diff_var.push_back(-1);
+
+      int lag = equations[*it]->get_arg2()->maxEndoLag();
+      if (max_lag < lag)
+        max_lag = lag;
     }
 }
 
diff --git a/src/DynamicModel.hh b/src/DynamicModel.hh
index 58f4d90fa6c770c9155652ee14b7a67d599ab072..94a91d0f57b5c4df8ff133bccc3f854866522ab0 100644
--- a/src/DynamicModel.hh
+++ b/src/DynamicModel.hh
@@ -293,8 +293,9 @@ public:
                                       vector<set<pair<int, int> > > &rhs,
                                       vector<bool> &nonstationary) const;
 
-  // Get equtaino information on diff operator
-  void getVarLhsDiffInfo(vector<int> &eqnumber, vector<bool> &diff, vector<int> &orig_diff_var) const;
+  // Get equtaino information on diff operator and max lag info
+  void getVarMaxLagAndLhsDiffAndInfo(vector<int> &eqnumber, vector<bool> &diff,
+                                     vector<int> &orig_diff_var, int &max_lag) const;
 
   //! Set indices for var expectation in dynamic model file
   void setVarExpectationIndices(map<string, pair<SymbolList, int> > &var_model_info);
diff --git a/src/ModFile.cc b/src/ModFile.cc
index 244dd061b28f81b96915a22f70dab9fea72bd009..7948a540f3975f84332576223cb3e4f2b6c93468 100644
--- a/src/ModFile.cc
+++ b/src/ModFile.cc
@@ -379,14 +379,15 @@ ModFile::transformPass(bool nostrict, bool stochastic, bool compute_xrefs, const
           vms->getVarModelEqTags(var_model_eqtags);
           if (!var_model_eqtags.empty())
             {
+              int max_lag = 0;
               vector<int> eqnumber, lhs, orig_diff_var;
               vector<set<pair<int, int> > > rhs;
               vector<bool> nonstationary, diff;
               dynamic_model.getVarModelVariablesFromEqTags(var_model_eqtags,
                                                            eqnumber, lhs, rhs, nonstationary);
-              original_model.getVarLhsDiffInfo(eqnumber, diff, orig_diff_var);
+              original_model.getVarMaxLagAndLhsDiffAndInfo(eqnumber, diff, orig_diff_var, max_lag);
               vms->fillVarModelInfoFromEquations(eqnumber, lhs, rhs, nonstationary,
-                                                 diff, orig_diff_var);
+                                                 diff, orig_diff_var, max_lag);
               string var_model_name;
               map<int, set<int > > rhs_pac;
               vms->getVarModelName(var_model_name);