diff --git a/ComputingTasks.cc b/ComputingTasks.cc
index 0b12ef76309474ff5ffdca26c9b70ad08ad2d389..ed1454ed7ee52c5d5ced8dae7eedde566ff5c22f 100644
--- a/ComputingTasks.cc
+++ b/ComputingTasks.cc
@@ -939,9 +939,18 @@ MS_SBVARStatement::writeOutput(ostream &output, const string &basename) const
   output << "ms_sbvar(1,M_,options_);" << endl;
 }
 
-IdentificationStatement::IdentificationStatement(const OptionsList &options_list_arg) :
-  options_list(options_list_arg)
+IdentificationStatement::IdentificationStatement(const OptionsList &options_list_arg)
 {
+  options_list = options_list_arg;
+  if (options_list.num_options.find("advanced") == options_list.num_options.end())
+    options_list.num_options["advanced"] = "0";
+
+  if (options_list.num_options.find("max_dim_cova_group") != options_list.num_options.end())
+    if (atoi(options_list.num_options["max_dim_cova_group"].c_str()) == 0)
+      {
+        cerr << "ERROR: The max_dim_cova_group option to identification only accepts integers > 0." << endl;
+        exit(EXIT_FAILURE);
+      }
 }
 
 void
diff --git a/ComputingTasks.hh b/ComputingTasks.hh
index 055ffc4feebc4aec9d6bbc8e52db0e20ddd30fd9..4c22c14004d70752dea2c7298ba051a0564660bf 100644
--- a/ComputingTasks.hh
+++ b/ComputingTasks.hh
@@ -391,7 +391,7 @@ public:
 class IdentificationStatement : public Statement
 {
 private:
-  const OptionsList options_list;
+  OptionsList options_list;
 public:
   IdentificationStatement(const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct);
diff --git a/DynareBison.yy b/DynareBison.yy
index f35184527dd3bd5ed3bb0542d7afec66781f4daf..ef9d5193f26e93aca612fa50bc8aa4b916c8e9e7 100644
--- a/DynareBison.yy
+++ b/DynareBison.yy
@@ -113,7 +113,7 @@ class ParsingDriver;
 %token <string_val> NAME
 %token NAN_CONSTANT NO_STATIC NOBS NOCONSTANT NOCORR NODIAGNOSTIC NOFUNCTIONS
 %token NOGRAPH NOMOMENTS NOPRINT NORMAL_PDF
-%token OBSERVATION_TRENDS OPTIM OPTIM_WEIGHTS ORDER OSR OSR_PARAMS
+%token OBSERVATION_TRENDS OPTIM OPTIM_WEIGHTS ORDER OSR OSR_PARAMS MAX_DIM_COVA_GROUP ADVANCED
 %token PARAMETERS PARAMETER_SET PARTIAL_INFORMATION PERIODS PLANNER_OBJECTIVE PLOT_CONDITIONAL_FORECAST PLOT_PRIORS PREFILTER PRESAMPLE
 %token PRINT PRIOR_MC PRIOR_TRUNC PRIOR_MODE PRIOR_MEAN POSTERIOR_MODE POSTERIOR_MEAN POSTERIOR_MEDIAN PRUNING
 %token <string_val> QUOTED_STRING
@@ -1265,6 +1265,8 @@ identification_option : o_ar
                       | o_useautocorr
                       | o_load_ident_files
                       | o_prior_mc
+                      | o_advanced
+                      | o_max_dim_cova_group
                       ;
 
 model_comparison : MODEL_COMPARISON mc_filename_list ';'
@@ -1820,6 +1822,8 @@ o_gsa_trans_ident : TRANS_IDENT EQUAL INT_NUMBER { driver.option_num("trans_iden
 o_load_ident_files : LOAD_IDENT_FILES EQUAL INT_NUMBER { driver.option_num("load_ident_files", $3); }
 o_useautocorr : USEAUTOCORR EQUAL INT_NUMBER { driver.option_num("useautocorr", $3); }
 o_prior_mc : PRIOR_MC EQUAL INT_NUMBER { driver.option_num("prior_mc", $3); }
+o_advanced : ADVANCED EQUAL signed_integer { driver.option_num("advanced", $3); }
+o_max_dim_cova_group : MAX_DIM_COVA_GROUP EQUAL INT_NUMBER { driver.option_num("max_dim_cova_group", $3); }
 
 o_homotopy_mode : HOMOTOPY_MODE EQUAL INT_NUMBER {driver.option_num("homotopy_mode",$3); };
 o_homotopy_steps : HOMOTOPY_STEPS EQUAL INT_NUMBER {driver.option_num("homotopy_steps",$3); };
diff --git a/DynareFlex.ll b/DynareFlex.ll
index 0f15b24b46fe136d2c8ae45d3d2291d544653dca..5861e64da936c4b6b508710fce4c96b769d6a8ba 100644
--- a/DynareFlex.ll
+++ b/DynareFlex.ll
@@ -530,7 +530,8 @@ string eofbuff;
 
  /* For identification() statement */
 <DYNARE_STATEMENT>prior_mc {return token::PRIOR_MC;}
-
+<DYNARE_STATEMENT>advanced {return token::ADVANCED;}
+<DYNARE_STATEMENT>max_dim_cova_group {return token::MAX_DIM_COVA_GROUP;}
 
 <DYNARE_STATEMENT,DYNARE_BLOCK>[A-Za-z_][A-Za-z0-9_]* {
   yylval->string_val = new string(yytext);