diff --git a/preprocessor/macro/MacroDriver.cc b/preprocessor/macro/MacroDriver.cc
index 71d53b9cbaf0da6373d662f5ea3d926651906893..69a2699e0791b51206bbdcee27f2468141fe6f05 100644
--- a/preprocessor/macro/MacroDriver.cc
+++ b/preprocessor/macro/MacroDriver.cc
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008-2017 Dynare Team
+ * Copyright (C) 2008-2018 Dynare Team
  *
  * This file is part of Dynare.
  *
@@ -64,7 +64,11 @@ MacroDriver::parse(const string &f, ostream &out, bool debug, bool no_line_macro
       }
     catch (boost::bad_lexical_cast &)
       {
-        file_with_endl << "@#define " << it->first << " = \"" << it->second << "\"" << endl;
+        if (!it->second.empty() && it->second.at(0) == '[' && it->second.at(it->second.length()-1) == ']')
+          // If the input is an array. Issue #1578
+          file_with_endl << "@#define " << it->first << " = " << it->second << endl;
+        else
+          file_with_endl << "@#define " << it->first << " = \"" << it->second << "\"" << endl;
       }
   file_with_endl << in.rdbuf() << endl;