diff --git a/src/ModelEquationBlock.cc b/src/ModelEquationBlock.cc
index 9a804d6f0c4c105b6395d90a1cd927651f65b1bf..6a725d5cb637fa56b0b0348d468f35a326e9b60c 100644
--- a/src/ModelEquationBlock.cc
+++ b/src/ModelEquationBlock.cc
@@ -372,12 +372,15 @@ Epilogue::writeEpilogueFile(const string &basename) const
       it.second->collectVariables(SymbolType::endogenous, used_symbols);
       it.second->collectVariables(SymbolType::exogenous, used_symbols);
       it.second->collectVariables(SymbolType::epilogue, used_symbols);
-      output << "simul_begin_date = dseries__." << symbol_table.getName(*(used_symbols.begin())) << ".firstobservedperiod;" << endl;
-      for (auto it1 = next(used_symbols.begin()); it1 != used_symbols.end(); it1++)
-        output << "if simul_begin_date < dseries__." << symbol_table.getName(*it1) << ".firstobservedperiod" << endl
-               << "    simul_begin_date = dseries__." << symbol_table.getName(*it1) << ".firstobservedperiod;" << endl
-               << "end" << endl;
-      output << "simul_begin_date = simul_begin_date + " << max_lag << " + 1;" << endl
+
+      output << "simul_begin_date = firstobservedperiod(dseries__{";
+      for (auto it1 = used_symbols.begin(); it1 != used_symbols.end(); it1++)
+        {
+          if (it1 != used_symbols.begin())
+            output << ", ";
+          output << "'" << symbol_table.getName(*it1) << "'";
+        }
+      output << "}) + " << max_lag << " + 1;" << endl
              << "if ~dseries__.exist('" << symbol_table.getName(it.first) << "')" << endl
              << "    dseries__ = [dseries__ dseries(NaN(dseries__.nobs,1), dseries__.firstdate, '" << symbol_table.getName(it.first)<< "')];" << endl
              << "end" << endl