diff --git a/DynamicModel.cc b/DynamicModel.cc
index e30fec77cad6f26fe5f864b25c37d29143bad68e..bfd25edca2a050cf2354bed7f598b3d2d58181c4 100644
--- a/DynamicModel.cc
+++ b/DynamicModel.cc
@@ -3053,8 +3053,8 @@ DynamicModel::computeRamseyPolicyFOCs(const StaticModel &static_model)
     }
 
   // Get Discount Factor
-  assert(symbol_table.exists("ramsey_policy_discount_factor"));
-  int symb_id = symbol_table.getID("ramsey_policy_discount_factor");
+  assert(symbol_table.exists("optimal_policy_discount_factor"));
+  int symb_id = symbol_table.getID("optimal_policy_discount_factor");
   assert(symbol_table.getType(symb_id) == eParameter);
   expr_t discount_factor_node = AddVariable(symb_id, 0);
 
diff --git a/DynareBison.yy b/DynareBison.yy
index 10bd29d3efba862c6411c7b5e782fb3274e697fe..13fb1a6f5ef777fe250ecd6b0fc04d3926d56d45 100644
--- a/DynareBison.yy
+++ b/DynareBison.yy
@@ -1890,7 +1890,7 @@ o_plot_priors: PLOT_PRIORS EQUAL INT_NUMBER {driver.option_num("plot_priors", $3
 o_aim_solver: AIM_SOLVER {driver.option_num("aim_solver", "1"); };
 o_partial_information : PARTIAL_INFORMATION {driver.option_num("partial_information", "1"); };
 
-o_planner_discount : PLANNER_DISCOUNT EQUAL expression { driver.declare_ramsey_policy_discount_factor_parameter($3); };
+o_planner_discount : PLANNER_DISCOUNT EQUAL expression { driver.declare_optimal_policy_discount_factor_parameter($3); };
 
 o_bvar_prior_tau : BVAR_PRIOR_TAU EQUAL signed_number { driver.option_num("bvar_prior_tau", $3); };
 o_bvar_prior_decay : BVAR_PRIOR_DECAY EQUAL non_negative_number { driver.option_num("bvar_prior_decay", $3); };
diff --git a/ParsingDriver.cc b/ParsingDriver.cc
index e624b8198325e99af63a15ff1dc32af1be8f7404..3bb5b9486b0120325a0a5ee35158257ceab17c6f 100644
--- a/ParsingDriver.cc
+++ b/ParsingDriver.cc
@@ -167,14 +167,14 @@ ParsingDriver::declare_parameter(string *name, string *tex_name)
 }
 
 void
-ParsingDriver::declare_ramsey_policy_discount_factor_parameter(expr_t exprnode)
+ParsingDriver::declare_optimal_policy_discount_factor_parameter(expr_t exprnode)
 {
-  string *ramseyParName_declare = new string("ramsey_policy_discount_factor");
-  string *ramseyParName_init = new string("ramsey_policy_discount_factor");
-  if (mod_file->symbol_table.exists(*ramseyParName_declare))
-    error("Symbol ramsey_policy_discount_factor is needed by Dynare when using a ramsey_policy Statement");
-  declare_parameter(ramseyParName_declare, NULL);
-  init_param(ramseyParName_init, exprnode);
+  string *optimalParName_declare = new string("optimal_policy_discount_factor");
+  string *optimalParName_init = new string("optimal_policy_discount_factor");
+  if (mod_file->symbol_table.exists(*optimalParName_declare))
+    error("Symbol optimal_policy_discount_factor is needed by Dynare when using an ramsey_policy or a discretionary_policy statement");
+  declare_parameter(optimalParName_declare, NULL);
+  init_param(optimalParName_init, exprnode);
 }
 
 void
@@ -1261,8 +1261,8 @@ ParsingDriver::end_planner_objective(expr_t expr)
 void
 ParsingDriver::ramsey_policy()
 {
-  if (!mod_file->symbol_table.exists("ramsey_policy_discount_factor"))
-    declare_ramsey_policy_discount_factor_parameter(data_tree->One);
+  if (!mod_file->symbol_table.exists("optimal_policy_discount_factor"))
+    declare_optimal_policy_discount_factor_parameter(data_tree->One);
   mod_file->addStatement(new RamseyPolicyStatement(symbol_list, options_list));
   symbol_list.clear();
   options_list.clear();
@@ -1271,6 +1271,8 @@ ParsingDriver::ramsey_policy()
 void
 ParsingDriver::discretionary_policy()
 {
+  if (!mod_file->symbol_table.exists("optimal_policy_discount_factor"))
+    declare_optimal_policy_discount_factor_parameter(data_tree->One);
   mod_file->addStatement(new DiscretionaryPolicyStatement(symbol_list, options_list));
   symbol_list.clear();
   options_list.clear();
diff --git a/ParsingDriver.hh b/ParsingDriver.hh
index 990733917dce2e141595201505d299bf2c3880d9..429be9de906a74fbf40fcb2ee82562a0e911ad20 100644
--- a/ParsingDriver.hh
+++ b/ParsingDriver.hh
@@ -213,8 +213,8 @@ public:
   void declare_exogenous_det(string *name, string *tex_name = NULL);
   //! Declares a parameter
   void declare_parameter(string *name, string *tex_name = NULL);
-  //! Declares declare_ramsey_policy_discount_factor as a parameter and initializes it to exprnode
-  void declare_ramsey_policy_discount_factor_parameter(expr_t exprnode);
+  //! Declares declare_optimal_policy_discount_factor as a parameter and initializes it to exprnode
+  void declare_optimal_policy_discount_factor_parameter(expr_t exprnode);
   //! Adds a predetermined_variable
   void add_predetermined_variable(string *name);
   //! Declares and initializes a local parameter