diff --git a/ComputingTasks.cc b/ComputingTasks.cc
index 740b061b1eaa192a661e6afc8eeaeb080f59fee0..a1d1ff426bf6fc57bb72eb422d149e10a9f3aa7b 100644
--- a/ComputingTasks.cc
+++ b/ComputingTasks.cc
@@ -294,7 +294,8 @@ void
 VarModelStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output);
-  symbol_list.writeOutput("options_.var.var_list_", output);
+  if (!symbol_list.empty())
+    symbol_list.writeOutput("options_.var.var_list_", output);
   output << "M_.var." << name << " = options_.var;" << endl
          << "clear options_.var;" << endl;
 }
diff --git a/DynareBison.yy b/DynareBison.yy
index b8eceeaff89f1e801d3b07e37bf94ac9d4cee3ad..8ec4ceeb8881c2e149e31869c776c8dc4430b3d7 100644
--- a/DynareBison.yy
+++ b/DynareBison.yy
@@ -362,7 +362,9 @@ var : VAR var_list ';'
       { driver.end_nonstationary_var(true, $6); }
     ;
 
-var_model : VAR_MODEL '(' var_model_options_list ')' var_symbol_list ';' { driver.var_model(); } ;
+var_model : VAR_MODEL '(' var_model_options_list ')' ';' { driver.var_model(); }
+          | VAR_MODEL '(' var_model_options_list ')' var_symbol_list ';' { driver.var_model(); } ;
+          ;
 
 var_symbol_list : var_symbol_list symbol
                   { driver.declare_var_endogenous($2); }