diff --git a/preprocessor/ComputingTasks.cc b/preprocessor/ComputingTasks.cc
index d189e34f34048d20bedd8ecfb3c2cb1ab73e4e3d..2c48c5a4fe3810783167f2a20df21485f157d10f 100644
--- a/preprocessor/ComputingTasks.cc
+++ b/preprocessor/ComputingTasks.cc
@@ -160,6 +160,50 @@ ForecastStatement::writeOutput(ostream &output, const string &basename) const
   output << "info = dyn_forecast(var_list_,'simul');" << endl;
 }
 
+RamseyModelStatement::RamseyModelStatement(const SymbolList &symbol_list_arg,
+                                             const OptionsList &options_list_arg) :
+  symbol_list(symbol_list_arg),
+  options_list(options_list_arg)
+{
+}
+
+void
+RamseyModelStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings)
+{
+  mod_file_struct.ramsey_model_present = true;
+
+  /* Fill in option_order of mod_file_struct
+     Since ramsey model needs one further order of derivation (for example, for 1st order
+     approximation, it needs 2nd derivatives), we add 1 to the order declared by user */
+  OptionsList::num_options_t::const_iterator it = options_list.num_options.find("order");
+  if (it != options_list.num_options.end())
+    {
+      int order = atoi(it->second.c_str());
+      if (order > 2)
+        {
+          cerr << "ERROR: ramsey_model: order > 2 is not  implemented" << endl;
+          exit(EXIT_FAILURE);
+        }
+      mod_file_struct.order_option = max(mod_file_struct.order_option, order + 1);
+    }
+
+  // Fill in mod_file_struct.partial_information
+  it = options_list.num_options.find("partial_information");
+  if (it != options_list.num_options.end() && it->second == "1")
+    mod_file_struct.partial_information = true;
+
+  // Option k_order_solver (implicit when order >= 3)
+  it = options_list.num_options.find("k_order_solver");
+  if ((it != options_list.num_options.end() && it->second == "1")
+      || mod_file_struct.order_option >= 3)
+    mod_file_struct.k_order_solver = true;
+}
+
+void
+RamseyModelStatement::writeOutput(ostream &output, const string &basename) const
+{
+}
+
 RamseyPolicyStatement::RamseyPolicyStatement(const SymbolList &symbol_list_arg,
                                              const OptionsList &options_list_arg) :
   symbol_list(symbol_list_arg),
diff --git a/preprocessor/ComputingTasks.hh b/preprocessor/ComputingTasks.hh
index 8882f2ceb0e9a168e89ac663a0550754d762409f..fde8b668803829db16b7cad9c921117f41b1de08 100644
--- a/preprocessor/ComputingTasks.hh
+++ b/preprocessor/ComputingTasks.hh
@@ -91,6 +91,18 @@ public:
   virtual void writeOutput(ostream &output, const string &basename) const;
 };
 
+class RamseyModelStatement : public Statement
+{
+private:
+  const SymbolList symbol_list;
+  const OptionsList options_list;
+public:
+  RamseyModelStatement(const SymbolList &symbol_list_arg,
+                        const OptionsList &options_list_arg);
+  virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
+  virtual void writeOutput(ostream &output, const string &basename) const;
+};
+
 class RamseyPolicyStatement : public Statement
 {
 private: