diff --git a/ModFile.cc b/ModFile.cc
index 8044fa1b193bfcad27a6da02b0e9a24ec9c6cdcc..71c539bdf5b208df9acc9d0d4f686f86fbd4254e 100644
--- a/ModFile.cc
+++ b/ModFile.cc
@@ -86,6 +86,12 @@ ModFile::addStatement(Statement *st)
   statements.push_back(st);
 }
 
+void
+ModFile::addStatementAtFront(Statement *st)
+{
+  statements.insert(statements.begin(), st);
+}
+
 void
 ModFile::checkPass()
 {
@@ -226,9 +232,9 @@ ModFile::transformPass()
       {
         int sid = symbol_table.addSymbol("dsge_prior_weight", eParameter);
         if (!mod_file_struct.dsge_var_calibrated.empty())
-          addStatement(new InitParamStatement(sid,
-                                              expressions_tree.AddNumConstant(mod_file_struct.dsge_var_calibrated),
-                                              symbol_table));
+          addStatementAtFront(new InitParamStatement(sid,
+                                                     expressions_tree.AddNumConstant(mod_file_struct.dsge_var_calibrated),
+                                                     symbol_table));
       }
     catch (SymbolTable::AlreadyDeclaredException &e)
       {
diff --git a/ModFile.hh b/ModFile.hh
index bfa12f9db34155cf946d2b4702eae8ff802375cb..f35957a957e2677653253ff69d1e39389539d4dd 100644
--- a/ModFile.hh
+++ b/ModFile.hh
@@ -82,6 +82,8 @@ private:
 public:
   //! Add a statement
   void addStatement(Statement *st);
+  //! Add a statement at the front of the statements vector
+  void addStatementAtFront(Statement *st);
   //! Evaluate all the statements
   /*! \param warn_uninit Should a warning be displayed for uninitialized endogenous/exogenous/parameters ? */
   void evalAllExpressions(bool warn_uninit);