diff --git a/ComputingTasks.cc b/ComputingTasks.cc
index 76ed6faad5c648bf09314c715f7b4131f6d96829..35bda998c2872d95755c3fab783b062d068ba21d 100644
--- a/ComputingTasks.cc
+++ b/ComputingTasks.cc
@@ -44,7 +44,7 @@ SteadyStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidati
 }
 
 void
-SteadyStatement::writeOutput(ostream &output, const string &basename) const
+SteadyStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output);
   output << "steady;" << endl;
@@ -56,7 +56,7 @@ CheckStatement::CheckStatement(const OptionsList &options_list_arg) :
 }
 
 void
-CheckStatement::writeOutput(ostream &output, const string &basename) const
+CheckStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output);
   output << "oo_.dr.eigval = check(M_,options_,oo_);" << endl;
@@ -80,7 +80,7 @@ ModelInfoStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolid
 }
 
 void
-ModelInfoStatement::writeOutput(ostream &output, const string &basename) const
+ModelInfoStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output);
   output << "model_info();" << endl;
@@ -98,7 +98,7 @@ SimulStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidatio
 }
 
 void
-SimulStatement::writeOutput(ostream &output, const string &basename) const
+SimulStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output);
   output << "perfect_foresight_setup;" << endl
@@ -111,7 +111,7 @@ PerfectForesightSetupStatement::PerfectForesightSetupStatement(const OptionsList
 }
 
 void
-PerfectForesightSetupStatement::writeOutput(ostream &output, const string &basename) const
+PerfectForesightSetupStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output);
   output << "perfect_foresight_setup;" << endl;
@@ -129,7 +129,7 @@ PerfectForesightSolverStatement::checkPass(ModFileStructure &mod_file_struct, Wa
 }
 
 void
-PerfectForesightSolverStatement::writeOutput(ostream &output, const string &basename) const
+PerfectForesightSolverStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output);
   output << "perfect_foresight_solver;" << endl;
@@ -166,7 +166,7 @@ StochSimulStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsoli
 }
 
 void
-StochSimulStatement::writeOutput(ostream &output, const string &basename) const
+StochSimulStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   // Ensure that order 3 implies k_order (#844)
   OptionsList::num_options_t::const_iterator it = options_list.num_options.find("order");
@@ -188,7 +188,7 @@ ForecastStatement::ForecastStatement(const SymbolList &symbol_list_arg,
 }
 
 void
-ForecastStatement::writeOutput(ostream &output, const string &basename) const
+ForecastStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output);
   symbol_list.writeOutput("var_list_", output);
@@ -235,7 +235,7 @@ RamseyModelStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsol
 }
 
 void
-RamseyModelStatement::writeOutput(ostream &output, const string &basename) const
+RamseyModelStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   // options_.ramsey_policy indicates that a Ramsey model is present in the *.mod file
   // this affects the computation of the steady state that uses a special algorithm
@@ -296,7 +296,7 @@ RamseyPolicyStatement::checkPass(ModFileStructure &mod_file_struct, WarningConso
 }
 
 void
-RamseyPolicyStatement::writeOutput(ostream &output, const string &basename) const
+RamseyPolicyStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   // Ensure that order 3 implies k_order (#844)
   OptionsList::num_options_t::const_iterator it = options_list.num_options.find("order");
@@ -356,7 +356,7 @@ DiscretionaryPolicyStatement::checkPass(ModFileStructure &mod_file_struct, Warni
 }
 
 void
-DiscretionaryPolicyStatement::writeOutput(ostream &output, const string &basename) const
+DiscretionaryPolicyStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   // Ensure that order 3 implies k_order (#844)
   OptionsList::num_options_t::const_iterator it = options_list.num_options.find("order");
@@ -462,7 +462,7 @@ EstimationStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsoli
 }
 
 void
-EstimationStatement::writeOutput(ostream &output, const string &basename) const
+EstimationStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output);
 
@@ -497,7 +497,7 @@ DynareSensitivityStatement::checkPass(ModFileStructure &mod_file_struct, Warning
 }
 
 void
-DynareSensitivityStatement::writeOutput(ostream &output, const string &basename) const
+DynareSensitivityStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output, "options_gsa");
 
@@ -524,7 +524,7 @@ RplotStatement::RplotStatement(const SymbolList &symbol_list_arg) :
 }
 
 void
-RplotStatement::writeOutput(ostream &output, const string &basename) const
+RplotStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   symbol_list.writeOutput("var_list_", output);
   output << "rplot(var_list_);" << endl;
@@ -535,7 +535,7 @@ UnitRootVarsStatement::UnitRootVarsStatement(void)
 }
 
 void
-UnitRootVarsStatement::writeOutput(ostream &output, const string &basename) const
+UnitRootVarsStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "options_.diffuse_filter = 1;" << endl
 	 << "options_.steadystate.nocheck = 1;" << endl;
@@ -546,7 +546,7 @@ PeriodsStatement::PeriodsStatement(int periods_arg) : periods(periods_arg)
 }
 
 void
-PeriodsStatement::writeOutput(ostream &output, const string &basename) const
+PeriodsStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "options_.periods = " << periods << ";" << endl;
 }
@@ -560,7 +560,7 @@ DsampleStatement::DsampleStatement(int val1_arg, int val2_arg) : val1(val1_arg),
 }
 
 void
-DsampleStatement::writeOutput(ostream &output, const string &basename) const
+DsampleStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   if (val2 < 0)
     output << "dsample(" << val1 << ");" << endl;
@@ -640,7 +640,7 @@ EstimatedParamsStatement::checkPass(ModFileStructure &mod_file_struct, WarningCo
 }
 
 void
-EstimatedParamsStatement::writeOutput(ostream &output, const string &basename) const
+EstimatedParamsStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "global estim_params_" << endl
          << "estim_params_.var_exo = [];" << endl
@@ -715,7 +715,7 @@ EstimatedParamsInitStatement::checkPass(ModFileStructure &mod_file_struct, Warni
 }
 
 void
-EstimatedParamsInitStatement::writeOutput(ostream &output, const string &basename) const
+EstimatedParamsInitStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   if (use_calibration)
     output << "options_.use_calibration_initialization = 1;" << endl;
@@ -781,7 +781,7 @@ EstimatedParamsBoundsStatement::EstimatedParamsBoundsStatement(const vector<Esti
 }
 
 void
-EstimatedParamsBoundsStatement::writeOutput(ostream &output, const string &basename) const
+EstimatedParamsBoundsStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   vector<EstimationParams>::const_iterator it;
 
@@ -869,7 +869,7 @@ ObservationTrendsStatement::ObservationTrendsStatement(const trend_elements_t &t
 }
 
 void
-ObservationTrendsStatement::writeOutput(ostream &output, const string &basename) const
+ObservationTrendsStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "options_.trend_coeff_ = {};" << endl;
 
@@ -902,7 +902,7 @@ OsrParamsStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolid
 }
 
 void
-OsrParamsStatement::writeOutput(ostream &output, const string &basename) const
+OsrParamsStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   symbol_list.writeOutput("osr_params_", output);
 }
@@ -937,7 +937,7 @@ OsrStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidation
 }
 
 void
-OsrStatement::writeOutput(ostream &output, const string &basename) const
+OsrStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   // Ensure that order 3 implies k_order (#844)
   OptionsList::num_options_t::const_iterator it = options_list.num_options.find("order");
@@ -967,7 +967,7 @@ OptimWeightsStatement::checkPass(ModFileStructure &mod_file_struct, WarningConso
 }
 
 void
-OptimWeightsStatement::writeOutput(ostream &output, const string &basename) const
+OptimWeightsStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "%" << endl
          << "% OPTIM_WEIGHTS" << endl
@@ -1010,7 +1010,7 @@ DynaSaveStatement::DynaSaveStatement(const SymbolList &symbol_list_arg,
 }
 
 void
-DynaSaveStatement::writeOutput(ostream &output, const string &basename) const
+DynaSaveStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   symbol_list.writeOutput("var_list_", output);
   output << "dynasave('" << filename
@@ -1025,7 +1025,7 @@ DynaTypeStatement::DynaTypeStatement(const SymbolList &symbol_list_arg,
 }
 
 void
-DynaTypeStatement::writeOutput(ostream &output, const string &basename) const
+DynaTypeStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   symbol_list.writeOutput("var_list_", output);
   output << "dynatype('" << filename
@@ -1040,7 +1040,7 @@ ModelComparisonStatement::ModelComparisonStatement(const filename_list_t &filena
 }
 
 void
-ModelComparisonStatement::writeOutput(ostream &output, const string &basename) const
+ModelComparisonStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output);
 
@@ -1086,7 +1086,7 @@ PlannerObjectiveStatement::computingPass()
 }
 
 void
-PlannerObjectiveStatement::writeOutput(ostream &output, const string &basename) const
+PlannerObjectiveStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   model_tree->writeStaticFile(basename + "_objective", false, false, false);
 }
@@ -1104,7 +1104,7 @@ BVARDensityStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsol
 }
 
 void
-BVARDensityStatement::writeOutput(ostream &output, const string &basename) const
+BVARDensityStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output);
   output << "bvar_density(" << maxnlags << ");" << endl;
@@ -1123,7 +1123,7 @@ BVARForecastStatement::checkPass(ModFileStructure &mod_file_struct, WarningConso
 }
 
 void
-BVARForecastStatement::writeOutput(ostream &output, const string &basename) const
+BVARForecastStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output);
   output << "bvar_forecast(" << nlags << ");" << endl;
@@ -1141,7 +1141,7 @@ SBVARStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidatio
 }
 
 void
-SBVARStatement::writeOutput(ostream &output, const string &basename) const
+SBVARStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output);
   output << "sbvar(M_,options_);" << endl;
@@ -1168,7 +1168,7 @@ MSSBVAREstimationStatement::checkPass(ModFileStructure &mod_file_struct, Warning
 }
 
 void
-MSSBVAREstimationStatement::writeOutput(ostream &output, const string &basename) const
+MSSBVAREstimationStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "options_ = initialize_ms_sbvar_options(M_, options_);" << endl
          << "options_.datafile = '';" << endl;
@@ -1188,7 +1188,7 @@ MSSBVARSimulationStatement::checkPass(ModFileStructure &mod_file_struct, Warning
 }
 
 void
-MSSBVARSimulationStatement::writeOutput(ostream &output, const string &basename) const
+MSSBVARSimulationStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "options_ = initialize_ms_sbvar_options(M_, options_);" << endl;
   options_list.writeOutput(output);
@@ -1216,7 +1216,7 @@ MSSBVARComputeMDDStatement::checkPass(ModFileStructure &mod_file_struct, Warning
 }
 
 void
-MSSBVARComputeMDDStatement::writeOutput(ostream &output, const string &basename) const
+MSSBVARComputeMDDStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "options_ = initialize_ms_sbvar_options(M_, options_);" << endl;
   options_list.writeOutput(output);
@@ -1243,7 +1243,7 @@ MSSBVARComputeProbabilitiesStatement::checkPass(ModFileStructure &mod_file_struc
 }
 
 void
-MSSBVARComputeProbabilitiesStatement::writeOutput(ostream &output, const string &basename) const
+MSSBVARComputeProbabilitiesStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "options_ = initialize_ms_sbvar_options(M_, options_);" << endl;
   options_list.writeOutput(output);
@@ -1289,7 +1289,7 @@ MSSBVARIrfStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsoli
 }
 
 void
-MSSBVARIrfStatement::writeOutput(ostream &output, const string &basename) const
+MSSBVARIrfStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "options_ = initialize_ms_sbvar_options(M_, options_);" << endl;
   symbol_list.writeOutput("var_list_", output);
@@ -1316,7 +1316,7 @@ MSSBVARForecastStatement::checkPass(ModFileStructure &mod_file_struct, WarningCo
 }
 
 void
-MSSBVARForecastStatement::writeOutput(ostream &output, const string &basename) const
+MSSBVARForecastStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "options_ = initialize_ms_sbvar_options(M_, options_);" << endl;
   options_list.writeOutput(output);
@@ -1360,7 +1360,7 @@ MSSBVARVarianceDecompositionStatement::checkPass(ModFileStructure &mod_file_stru
 }
 
 void
-MSSBVARVarianceDecompositionStatement::writeOutput(ostream &output, const string &basename) const
+MSSBVARVarianceDecompositionStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "options_ = initialize_ms_sbvar_options(M_, options_);" << endl;
   options_list.writeOutput(output);
@@ -1385,7 +1385,7 @@ IdentificationStatement::checkPass(ModFileStructure &mod_file_struct, WarningCon
 }
 
 void
-IdentificationStatement::writeOutput(ostream &output, const string &basename) const
+IdentificationStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output, "options_ident");
 
@@ -1412,7 +1412,7 @@ WriteLatexDynamicModelStatement::WriteLatexDynamicModelStatement(const DynamicMo
 }
 
 void
-WriteLatexDynamicModelStatement::writeOutput(ostream &output, const string &basename) const
+WriteLatexDynamicModelStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   dynamic_model.writeLatexFile(basename);
 }
@@ -1423,7 +1423,7 @@ WriteLatexStaticModelStatement::WriteLatexStaticModelStatement(const StaticModel
 }
 
 void
-WriteLatexStaticModelStatement::writeOutput(ostream &output, const string &basename) const
+WriteLatexStaticModelStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   static_model.writeLatexFile(basename);
 }
@@ -1434,7 +1434,7 @@ WriteLatexOriginalModelStatement::WriteLatexOriginalModelStatement(const Dynamic
 }
 
 void
-WriteLatexOriginalModelStatement::writeOutput(ostream &output, const string &basename) const
+WriteLatexOriginalModelStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   original_model.writeLatexOriginalFile(basename);
 }
@@ -1447,7 +1447,7 @@ ShockDecompositionStatement::ShockDecompositionStatement(const SymbolList &symbo
 }
 
 void
-ShockDecompositionStatement::writeOutput(ostream &output, const string &basename) const
+ShockDecompositionStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output);
   symbol_list.writeOutput("var_list_", output);
@@ -1460,7 +1460,7 @@ ConditionalForecastStatement::ConditionalForecastStatement(const OptionsList &op
 }
 
 void
-ConditionalForecastStatement::writeOutput(ostream &output, const string &basename) const
+ConditionalForecastStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output, "options_cond_fcst_");
   output << "imcforecast(constrained_paths_, constrained_vars_, options_cond_fcst_);" << endl;
@@ -1473,7 +1473,7 @@ PlotConditionalForecastStatement::PlotConditionalForecastStatement(int periods_a
 }
 
 void
-PlotConditionalForecastStatement::writeOutput(ostream &output, const string &basename) const
+PlotConditionalForecastStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   symbol_list.writeOutput("var_list_", output);
   if (periods == -1)
@@ -1526,7 +1526,7 @@ SvarIdentificationStatement::checkPass(ModFileStructure &mod_file_struct, Warnin
 }
 
 void
-SvarIdentificationStatement::writeOutput(ostream &output, const string &basename) const
+SvarIdentificationStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   assert(!(upper_cholesky_present && lower_cholesky_present));
   output << "%" << endl
@@ -1743,7 +1743,7 @@ MarkovSwitchingStatement::checkPass(ModFileStructure &mod_file_struct, WarningCo
 }
 
 void
-MarkovSwitchingStatement::writeOutput(ostream &output, const string &basename) const
+MarkovSwitchingStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   bool isDurationAVec = true;
   string infStr("Inf");
@@ -1852,7 +1852,7 @@ SvarStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidation
 }
 
 void
-SvarStatement::writeOutput(ostream &output, const string &basename) const
+SvarStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   OptionsList::num_options_t::const_iterator it0, it1, it2;
   OptionsList::vec_int_options_t::const_iterator itv;
@@ -1898,7 +1898,7 @@ SetTimeStatement::SetTimeStatement(const OptionsList &options_list_arg) :
 }
 
 void
-SetTimeStatement::writeOutput(ostream &output, const string &basename) const
+SetTimeStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output);
 }
@@ -1937,7 +1937,7 @@ EstimationDataStatement::checkPass(ModFileStructure &mod_file_struct, WarningCon
 }
 
 void
-EstimationDataStatement::writeOutput(ostream &output, const string &basename) const
+EstimationDataStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output, "options_.dataset");
 }
@@ -1959,7 +1959,7 @@ SubsamplesStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsoli
 }
 
 void
-SubsamplesStatement::writeOutput(ostream &output, const string &basename) const
+SubsamplesStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "subsamples_indx = get_new_or_existing_ei_index('subsamples_index', '"
          << name1 << "','" << name2 << "');" << endl
@@ -2029,7 +2029,7 @@ SubsamplesEqualStatement::SubsamplesEqualStatement(const string &to_name1_arg,
 }
 
 void
-SubsamplesEqualStatement::writeOutput(ostream &output, const string &basename) const
+SubsamplesEqualStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "subsamples_to_indx = get_new_or_existing_ei_index('subsamples_index', '"
          << to_name1 << "','" << to_name2 << "');" << endl
@@ -2123,7 +2123,7 @@ JointPriorStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsoli
 }
 
 void
-JointPriorStatement::writeOutput(ostream &output, const string &basename) const
+JointPriorStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   for (vector<string>::const_iterator it = joint_parameters.begin() ; it != joint_parameters.end(); it++)
     output << "eifind = get_new_or_existing_ei_index('joint_parameter_prior_index', '"
@@ -2387,7 +2387,7 @@ PriorStatement::PriorStatement(const string &name_arg,
 }
 
 void
-PriorStatement::writeOutput(ostream &output, const string &basename) const
+PriorStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   string lhs_field = "estimation_info.parameter(eifind)";
   output << "eifind = get_new_or_existing_ei_index('parameter_prior_index', '"
@@ -2424,7 +2424,7 @@ StdPriorStatement::StdPriorStatement(const string &name_arg,
 }
 
 void
-StdPriorStatement::writeOutput(ostream &output, const string &basename) const
+StdPriorStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   string lhs_field;
   get_base_name(symbol_table.getType(name), lhs_field);
@@ -2487,7 +2487,7 @@ CorrPriorStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolid
 }
 
 void
-CorrPriorStatement::writeOutput(ostream &output, const string &basename) const
+CorrPriorStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   string lhs_field;
   get_base_name(symbol_table.getType(name), lhs_field);
@@ -2575,7 +2575,7 @@ PriorEqualStatement::get_base_name(const SymbolType symb_type, string &lhs_field
 }
 
 void
-PriorEqualStatement::writeOutput(ostream &output, const string &basename) const
+PriorEqualStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   string lhs_field, rhs_field;
 
@@ -2721,7 +2721,7 @@ OptionsStatement::OptionsStatement(const string &name_arg,
 }
 
 void
-OptionsStatement::writeOutput(ostream &output, const string &basename) const
+OptionsStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   string lhs_field = "estimation_info.parameter(eifind)";
   output << "eifind = get_new_or_existing_ei_index('parameter_options_index', '"
@@ -2749,7 +2749,7 @@ StdOptionsStatement::StdOptionsStatement(const string &name_arg,
 }
 
 void
-StdOptionsStatement::writeOutput(ostream &output, const string &basename) const
+StdOptionsStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   string lhs_field;
   get_base_name(symbol_table.getType(name), lhs_field);
@@ -2804,7 +2804,7 @@ CorrOptionsStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsol
 }
 
 void
-CorrOptionsStatement::writeOutput(ostream &output, const string &basename) const
+CorrOptionsStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   string lhs_field;
   get_base_name(symbol_table.getType(name), lhs_field);
@@ -2887,7 +2887,7 @@ OptionsEqualStatement::get_base_name(const SymbolType symb_type, string &lhs_fie
 }
 
 void
-OptionsEqualStatement::writeOutput(ostream &output, const string &basename) const
+OptionsEqualStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   string lhs_field, rhs_field;
 
@@ -2961,7 +2961,7 @@ CalibSmootherStatement::checkPass(ModFileStructure &mod_file_struct, WarningCons
 }
 
 void
-CalibSmootherStatement::writeOutput(ostream &output, const string &basename) const
+CalibSmootherStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output);
   symbol_list.writeOutput("var_list_", output);
@@ -2988,7 +2988,7 @@ ExtendedPathStatement::checkPass(ModFileStructure &mod_file_struct, WarningConso
 }
 
 void
-ExtendedPathStatement::writeOutput(ostream &output, const string &basename) const
+ExtendedPathStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   // Beware: options do not have the same name in the interface and in the M code...
 
@@ -3007,7 +3007,7 @@ ModelDiagnosticsStatement::ModelDiagnosticsStatement()
 }
 
 void
-ModelDiagnosticsStatement::writeOutput(ostream &output, const string &basename) const
+ModelDiagnosticsStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "model_diagnostics(M_,options_,oo_);" << endl;
 }
@@ -3018,7 +3018,7 @@ Smoother2histvalStatement::Smoother2histvalStatement(const OptionsList &options_
 }
 
 void
-Smoother2histvalStatement::writeOutput(ostream &output, const string &basename) const
+Smoother2histvalStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   options_list.writeOutput(output, "options_smoother2histval");
   output << "smoother2histval(options_smoother2histval);" << endl;
diff --git a/ComputingTasks.hh b/ComputingTasks.hh
index 037ce9b699e13b3128bcc21c7aca73988217641f..51bc055ed4a2afa1e67591d625cabd15749f0ecc 100644
--- a/ComputingTasks.hh
+++ b/ComputingTasks.hh
@@ -35,7 +35,7 @@ private:
 public:
   SteadyStatement(const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class CheckStatement : public Statement
@@ -45,7 +45,7 @@ private:
 public:
   CheckStatement(const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class SimulStatement : public Statement
@@ -55,7 +55,7 @@ private:
 public:
   SimulStatement(const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class PerfectForesightSetupStatement : public Statement
@@ -64,7 +64,7 @@ private:
   const OptionsList options_list;
 public:
   PerfectForesightSetupStatement(const OptionsList &options_list_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class PerfectForesightSolverStatement : public Statement
@@ -74,7 +74,7 @@ private:
 public:
   PerfectForesightSolverStatement(const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class ModelInfoStatement : public Statement
@@ -84,7 +84,7 @@ private:
 public:
   ModelInfoStatement(const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class StochSimulStatement : public Statement
@@ -96,7 +96,7 @@ public:
   StochSimulStatement(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;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class ForecastStatement : public Statement
@@ -107,7 +107,7 @@ private:
 public:
   ForecastStatement(const SymbolList &symbol_list_arg,
                     const OptionsList &options_list_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class RamseyModelStatement : public Statement
@@ -119,7 +119,7 @@ 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;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class RamseyPolicyStatement : public Statement
@@ -131,7 +131,7 @@ public:
   RamseyPolicyStatement(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;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class DiscretionaryPolicyStatement : public Statement
@@ -143,7 +143,7 @@ public:
   DiscretionaryPolicyStatement(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;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class RplotStatement : public Statement
@@ -152,14 +152,14 @@ private:
   const SymbolList symbol_list;
 public:
   RplotStatement(const SymbolList &symbol_list_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class UnitRootVarsStatement : public Statement
 {
 public:
   UnitRootVarsStatement(void);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class PeriodsStatement : public Statement
@@ -168,7 +168,7 @@ private:
   const int periods;
 public:
   PeriodsStatement(int periods_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class DsampleStatement : public Statement
@@ -178,7 +178,7 @@ private:
 public:
   DsampleStatement(int val1_arg);
   DsampleStatement(int val1_arg, int val2_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class EstimationStatement : public Statement
@@ -190,7 +190,7 @@ public:
   EstimationStatement(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;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class DynareSensitivityStatement : public Statement
@@ -200,7 +200,7 @@ private:
 public:
   DynareSensitivityStatement(const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class ObservationTrendsStatement : public Statement
@@ -213,7 +213,7 @@ private:
 public:
   ObservationTrendsStatement(const trend_elements_t &trend_elements_arg,
                              const SymbolTable &symbol_table_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class OsrParamsStatement : public Statement
@@ -223,7 +223,7 @@ private:
 public:
   OsrParamsStatement(const SymbolList &symbol_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class OsrStatement : public Statement
@@ -235,7 +235,7 @@ public:
   OsrStatement(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;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class DynaTypeStatement : public Statement
@@ -246,7 +246,7 @@ private:
 public:
   DynaTypeStatement(const SymbolList &symbol_list_arg,
                     const string &filename_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class DynaSaveStatement : public Statement
@@ -257,7 +257,7 @@ private:
 public:
   DynaSaveStatement(const SymbolList &symbol_list_arg,
                     const string &filename_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class ModelComparisonStatement : public Statement
@@ -270,7 +270,7 @@ private:
 public:
   ModelComparisonStatement(const filename_list_t &filename_list_arg,
                            const OptionsList &options_list_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 //! Temporary structure used when parsing estimation_params* statements
@@ -309,7 +309,7 @@ public:
   EstimatedParamsStatement(const vector<EstimationParams> &estim_params_list_arg,
                            const SymbolTable &symbol_table_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class EstimatedParamsInitStatement : public Statement
@@ -323,7 +323,7 @@ public:
                                const SymbolTable &symbol_table_arg,
                                const bool use_calibration_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class EstimatedParamsBoundsStatement : public Statement
@@ -334,7 +334,7 @@ private:
 public:
   EstimatedParamsBoundsStatement(const vector<EstimationParams> &estim_params_list_arg,
                                  const SymbolTable &symbol_table_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class OptimWeightsStatement : public Statement
@@ -351,7 +351,7 @@ public:
                         const covar_weights_t &covar_weights_arg,
                         const SymbolTable &symbol_table_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 /*! \todo Make model_tree a member instead of a pointer */
@@ -370,7 +370,7 @@ public:
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
   /*! \todo allow for the possibility of disabling temporary terms */
   virtual void computingPass();
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   //! Return the Planner Objective
   StaticModel *getPlannerObjective() const;
 };
@@ -383,7 +383,7 @@ private:
 public:
   BVARDensityStatement(int maxnlags_arg, const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class BVARForecastStatement : public Statement
@@ -394,7 +394,7 @@ private:
 public:
   BVARForecastStatement(int nlags_arg, const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class SBVARStatement : public Statement
@@ -404,7 +404,7 @@ private:
 public:
   SBVARStatement(const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class MSSBVAREstimationStatement : public Statement
@@ -414,7 +414,7 @@ private:
 public:
   MSSBVAREstimationStatement(const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class MSSBVARSimulationStatement : public Statement
@@ -424,7 +424,7 @@ private:
 public:
   MSSBVARSimulationStatement(const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class MSSBVARComputeMDDStatement : public Statement
@@ -434,7 +434,7 @@ private:
 public:
   MSSBVARComputeMDDStatement(const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class MSSBVARComputeProbabilitiesStatement : public Statement
@@ -444,7 +444,7 @@ private:
 public:
   MSSBVARComputeProbabilitiesStatement(const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class MSSBVARIrfStatement : public Statement
@@ -456,7 +456,7 @@ public:
   MSSBVARIrfStatement(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;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class MSSBVARForecastStatement : public Statement
@@ -466,7 +466,7 @@ private:
 public:
   MSSBVARForecastStatement(const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class MSSBVARVarianceDecompositionStatement : public Statement
@@ -476,7 +476,7 @@ private:
 public:
   MSSBVARVarianceDecompositionStatement(const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class IdentificationStatement : public Statement
@@ -486,7 +486,7 @@ private:
 public:
   IdentificationStatement(const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class WriteLatexDynamicModelStatement : public Statement
@@ -495,7 +495,7 @@ private:
   const DynamicModel &dynamic_model;
 public:
   WriteLatexDynamicModelStatement(const DynamicModel &dynamic_model_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class WriteLatexStaticModelStatement : public Statement
@@ -504,7 +504,7 @@ private:
   const StaticModel &static_model;
 public:
   WriteLatexStaticModelStatement(const StaticModel &static_model_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class WriteLatexOriginalModelStatement : public Statement
@@ -513,7 +513,7 @@ private:
   const DynamicModel &original_model;
 public:
   WriteLatexOriginalModelStatement(const DynamicModel &original_model_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class ShockDecompositionStatement : public Statement
@@ -524,7 +524,7 @@ private:
 public:
   ShockDecompositionStatement(const SymbolList &symbol_list_arg,
                               const OptionsList &options_list_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class ConditionalForecastStatement : public Statement
@@ -533,7 +533,7 @@ private:
   const OptionsList options_list;
 public:
   ConditionalForecastStatement(const OptionsList &options_list_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class PlotConditionalForecastStatement : public Statement
@@ -544,7 +544,7 @@ private:
   const SymbolList symbol_list;
 public:
   PlotConditionalForecastStatement(int periods_arg, const SymbolList &symbol_list_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class CalibSmootherStatement : public Statement
@@ -556,7 +556,7 @@ public:
   CalibSmootherStatement(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;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class ExtendedPathStatement : public Statement
@@ -566,7 +566,7 @@ private:
 public:
   ExtendedPathStatement(const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class SvarIdentificationStatement : public Statement
@@ -597,7 +597,7 @@ public:
 			      const bool &constants_exclusion_present_arg,
                               const SymbolTable &symbol_table_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class MarkovSwitchingStatement : public Statement
@@ -608,7 +608,7 @@ private:
 public:
   MarkovSwitchingStatement(const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeCOutput(ostream &output, const string &basename);
 };
 
@@ -619,7 +619,7 @@ private:
 public:
   SvarStatement(const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class SetTimeStatement : public Statement
@@ -628,7 +628,7 @@ private:
   const OptionsList options_list;
 public:
   SetTimeStatement(const OptionsList &options_list_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class EstimationDataStatement : public Statement
@@ -638,7 +638,7 @@ private:
 public:
   EstimationDataStatement(const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class SubsamplesStatement : public Statement
@@ -657,7 +657,7 @@ public:
                       const subsample_declaration_map_t subsample_declaration_map_arg,
                       const SymbolTable &symbol_table_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class SubsamplesEqualStatement : public Statement
@@ -674,7 +674,7 @@ public:
                            const string &from_name1_arg,
                            const string &from_name2_arg,
                            const SymbolTable &symbol_table_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class JointPriorStatement : public Statement
@@ -688,7 +688,7 @@ public:
                       const PriorDistributions &prior_shape_arg,
                       const OptionsList &options_list_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   void writeOutputHelper(ostream &output, const string &field, const string &lhs_field) const;
 };
 
@@ -732,7 +732,7 @@ public:
                  const PriorDistributions &prior_shape_arg,
                  const expr_t &variance_arg,
                  const OptionsList &options_list_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeCOutput(ostream &output, const string &basename);
 };
 
@@ -747,7 +747,7 @@ public:
                     const expr_t &variance_arg,
                     const OptionsList &options_list_arg,
                     const SymbolTable &symbol_table_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeCOutput(ostream &output, const string &basename);
 };
 
@@ -765,7 +765,7 @@ public:
                      const OptionsList &options_list_arg,
                      const SymbolTable &symbol_table_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeCOutput(ostream &output, const string &basename);
 };
 
@@ -793,7 +793,7 @@ public:
                       const SymbolTable &symbol_table_arg);
   void get_base_name(const SymbolType symb_type, string &lhs_field) const;
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class BasicOptionsStatement : public Statement
@@ -822,7 +822,7 @@ class OptionsStatement : public BasicOptionsStatement
 {
 public:
   OptionsStatement(const string &name_arg, const string &subsample_name_arg, const OptionsList &options_list_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeCOutput(ostream &output, const string &basename);
 };
 
@@ -835,7 +835,7 @@ public:
                       const string &subsample_name_arg,
                       const OptionsList &options_list_arg,
                       const SymbolTable &symbol_table_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeCOutput(ostream &output, const string &basename);
 };
 
@@ -850,7 +850,7 @@ public:
                        const OptionsList &options_list_arg,
                        const SymbolTable &symbol_table_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeCOutput(ostream &output, const string &basename);
 };
 
@@ -878,14 +878,14 @@ public:
                         const SymbolTable &symbol_table_arg);
   void get_base_name(const SymbolType symb_type, string &lhs_field) const;
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class ModelDiagnosticsStatement : public Statement
 {
 public:
   ModelDiagnosticsStatement();
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class Smoother2histvalStatement : public Statement
@@ -894,7 +894,7 @@ private:
   const OptionsList options_list;
 public:
   Smoother2histvalStatement(const OptionsList &options_list_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 #endif
diff --git a/DynareMain.cc b/DynareMain.cc
index 9320a4afd83e7d78286c88899264d5c9371b63f3..0535663c3a6b5893118b744ea614ba9a6fd12461 100644
--- a/DynareMain.cc
+++ b/DynareMain.cc
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2003-2014 Dynare Team
+ * Copyright (C) 2003-2015 Dynare Team
  *
  * This file is part of Dynare.
  *
@@ -38,7 +38,7 @@
 void main2(stringstream &in, string &basename, bool debug, bool clear_all, bool clear_global, bool no_tmp_terms, bool no_log, bool no_warn,
            bool warn_uninit, bool console, bool nograph, bool nointeractive,
            bool parallel, const string &parallel_config_file, const string &cluster_name, bool parallel_slave_open_mode,
-           bool parallel_test, bool nostrict, bool check_model_changes, FileOutputType output_mode, LanguageOutputType lang
+           bool parallel_test, bool nostrict, bool check_model_changes, bool minimal_workspace, FileOutputType output_mode, LanguageOutputType lang
 #if defined(_WIN32) || defined(__CYGWIN32__)
            , bool cygwin, bool msvc
 #endif
@@ -48,8 +48,8 @@ void
 usage()
 {
   cerr << "Dynare usage: dynare mod_file [debug] [noclearall] [onlyclearglobals] [savemacro[=macro_file]] [onlymacro] [nolinemacro] [notmpterms] [nolog] [warn_uninit]"
-       << " [console] [nograph] [nointeractive] [parallel[=cluster_name]] [conffile=parallel_config_path_and_filename] [parallel_slave_open_mode] [parallel_test] "
-       << " [-D<variable>[=<value>]] [nostrict] [fast] [output=dynamic|first|second|third] [language=C|C++]"
+       << " [console] [nograph] [nointeractive] [parallel[=cluster_name]] [conffile=parallel_config_path_and_filename] [parallel_slave_open_mode] [parallel_test]"
+       << " [-D<variable>[=<value>]] [nostrict] [fast] [minimal_workspace] [output=dynamic|first|second|third] [language=C|C++]"
 #if defined(_WIN32) || defined(__CYGWIN32__)
        << " [cygwin] [msvc]"
 #endif
@@ -98,6 +98,7 @@ main(int argc, char **argv)
   bool parallel_test = false;
   bool nostrict = false;
   bool check_model_changes = false;
+  bool minimal_workspace = false;
   map<string, string> defines;
   FileOutputType output_mode = none;
   LanguageOutputType language = matlab;
@@ -168,6 +169,8 @@ main(int argc, char **argv)
         nostrict = true;
       else if (!strcmp(argv[arg], "fast"))
         check_model_changes = true;
+      else if (!strcmp(argv[arg], "minimal_workspace"))
+        minimal_workspace = true;
       else if (strlen(argv[arg]) >= 8 && !strncmp(argv[arg], "parallel", 8))
         {
           parallel = true;
@@ -288,7 +291,8 @@ main(int argc, char **argv)
 
   // Do the rest
   main2(macro_output, basename, debug, clear_all, clear_global, no_tmp_terms, no_log, no_warn, warn_uninit, console, nograph, nointeractive,
-        parallel, parallel_config_file, cluster_name, parallel_slave_open_mode, parallel_test, nostrict, check_model_changes, output_mode, language
+        parallel, parallel_config_file, cluster_name, parallel_slave_open_mode, parallel_test, nostrict, check_model_changes, minimal_workspace,
+        output_mode, language
 #if defined(_WIN32) || defined(__CYGWIN32__)
         , cygwin, msvc
 #endif
diff --git a/DynareMain2.cc b/DynareMain2.cc
index fe1c6942723ccf4dd450beaa90e25c6930fbc04e..33782affdafa8e8d6f8edd7318607701621e4c77 100644
--- a/DynareMain2.cc
+++ b/DynareMain2.cc
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008-2014 Dynare Team
+ * Copyright (C) 2008-2015 Dynare Team
  *
  * This file is part of Dynare.
  *
@@ -27,7 +27,7 @@
 void
 main2(stringstream &in, string &basename, bool debug, bool clear_all, bool clear_global, bool no_tmp_terms, bool no_log, bool no_warn, bool warn_uninit, bool console, bool nograph, bool nointeractive,
       bool parallel, const string &parallel_config_file, const string &cluster_name, bool parallel_slave_open_mode,
-      bool parallel_test, bool nostrict, bool check_model_changes, FileOutputType output_mode, LanguageOutputType language
+      bool parallel_test, bool nostrict, bool check_model_changes, bool minimal_workspace, FileOutputType output_mode, LanguageOutputType language
 #if defined(_WIN32) || defined(__CYGWIN32__)
       , bool cygwin, bool msvc
 #endif
@@ -61,7 +61,7 @@ main2(stringstream &in, string &basename, bool debug, bool clear_all, bool clear
     mod_file->writeExternalFiles(basename, output_mode, language);
   else
     mod_file->writeOutputFiles(basename, clear_all, clear_global, no_log, no_warn, console, nograph,
-			       nointeractive, config_file, check_model_changes
+                               nointeractive, config_file, check_model_changes, minimal_workspace
 #if defined(_WIN32) || defined(__CYGWIN32__)
 			       , cygwin, msvc
 #endif
diff --git a/ModFile.cc b/ModFile.cc
index 0a7860c4d61b8870a33238c7c262cc366015fbb6..575d55fbafd3fd5adf418be9c9d9a88d4137a44c 100644
--- a/ModFile.cc
+++ b/ModFile.cc
@@ -526,8 +526,9 @@ ModFile::computingPass(bool no_tmp_terms, FileOutputType output)
 }
 
 void
-ModFile::writeOutputFiles(const string &basename, bool clear_all, bool clear_global, bool no_log, bool no_warn, bool console, bool nograph,
-			  bool nointeractive, const ConfigFile &config_file, bool check_model_changes
+ModFile::writeOutputFiles(const string &basename, bool clear_all, bool clear_global, bool no_log, bool no_warn,
+                          bool console, bool nograph, bool nointeractive, const ConfigFile &config_file,
+                          bool check_model_changes, bool minimal_workspace
 #if defined(_WIN32) || defined(__CYGWIN32__)
                           , bool cygwin, bool msvc
 #endif
@@ -587,6 +588,9 @@ ModFile::writeOutputFiles(const string &basename, bool clear_all, bool clear_glo
   if (!no_log)
     mOutputFile << "diary('" << basename << ".log');" << endl;
 
+  if (minimal_workspace)
+    mOutputFile << "options_.minimal_workspace = 1;" << endl;
+
   if (console)
     mOutputFile << "options_.console_mode = 1;" << endl
                 << "options_.nodisplay = 1;" << endl;
@@ -740,7 +744,7 @@ ModFile::writeOutputFiles(const string &basename, bool clear_all, bool clear_glo
   for (vector<Statement *>::const_iterator it = statements.begin();
        it != statements.end(); it++)
     {
-      (*it)->writeOutput(mOutputFile, basename);
+      (*it)->writeOutput(mOutputFile, basename, minimal_workspace);
 
       /* Special treatment for initval block: insert initial values for the
          auxiliary variables and initialize exo det */
diff --git a/ModFile.hh b/ModFile.hh
index bf36366856d5c7645f8c226912a9122afde6d729..34b3b30bf4080e4df669ce4613c824fd45f1b94f 100644
--- a/ModFile.hh
+++ b/ModFile.hh
@@ -146,7 +146,8 @@ public:
     \param msvc Should the MEX command of use_dll be adapted for MSVC?
   */
   void writeOutputFiles(const string &basename, bool clear_all, bool clear_global, bool no_log, bool no_warn,
-			bool console, bool nograph, bool nointeractive, const ConfigFile &config_file, bool check_model_changes
+                        bool console, bool nograph, bool nointeractive, const ConfigFile &config_file,
+                        bool check_model_changes, bool minimal_workspace
 #if defined(_WIN32) || defined(__CYGWIN32__)
                         , bool cygwin, bool msvc
 #endif
diff --git a/NumericalInitialization.cc b/NumericalInitialization.cc
index 3df225fcff15e7cec62594663c3a102331770a5b..85055905fabf380b58bd78574e4be629444d6a75 100644
--- a/NumericalInitialization.cc
+++ b/NumericalInitialization.cc
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2003-2014 Dynare Team
+ * Copyright (C) 2003-2015 Dynare Team
  *
  * This file is part of Dynare.
  *
@@ -41,13 +41,14 @@ InitParamStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolid
 }
 
 void
-InitParamStatement::writeOutput(ostream &output, const string &basename) const
+InitParamStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   int id = symbol_table.getTypeSpecificID(symb_id) + 1;
   output << "M_.params( " << id << " ) = ";
   param_value->writeOutput(output);
   output << ";" << endl;
-  output << symbol_table.getName(symb_id) << " = M_.params( " << id << " );\n";
+  if (!minimal_workspace)
+    output << symbol_table.getName(symb_id) << " = M_.params( " << id << " );" << endl;
 }
 
 void
@@ -186,7 +187,7 @@ InitValStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidat
 }
 
 void
-InitValStatement::writeOutput(ostream &output, const string &basename) const
+InitValStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "%" << endl
          << "% INITVAL instructions" << endl
@@ -242,7 +243,7 @@ EndValStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidati
 }
 
 void
-EndValStatement::writeOutput(ostream &output, const string &basename) const
+EndValStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "%" << endl
          << "% ENDVAL instructions" << endl
@@ -268,7 +269,7 @@ HistValStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidat
 }
 
 void
-HistValStatement::writeOutput(ostream &output, const string &basename) const
+HistValStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "%" << endl
          << "% HISTVAL instructions" << endl
@@ -326,7 +327,7 @@ InitvalFileStatement::InitvalFileStatement(const string &filename_arg) :
 }
 
 void
-InitvalFileStatement::writeOutput(ostream &output, const string &basename) const
+InitvalFileStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "%" << endl
          << "% INITVAL_FILE statement" << endl
@@ -341,7 +342,7 @@ HistvalFileStatement::HistvalFileStatement(const string &filename_arg) :
 }
 
 void
-HistvalFileStatement::writeOutput(ostream &output, const string &basename) const
+HistvalFileStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "histvalf('" << filename << "');" << endl;
 }
@@ -354,7 +355,7 @@ HomotopyStatement::HomotopyStatement(const homotopy_values_t &homotopy_values_ar
 }
 
 void
-HomotopyStatement::writeOutput(ostream &output, const string &basename) const
+HomotopyStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "%" << endl
          << "% HOMOTOPY_SETUP instructions" << endl
@@ -388,7 +389,7 @@ SaveParamsAndSteadyStateStatement::SaveParamsAndSteadyStateStatement(const strin
 }
 
 void
-SaveParamsAndSteadyStateStatement::writeOutput(ostream &output, const string &basename) const
+SaveParamsAndSteadyStateStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "save_params_and_steady_state('" << filename << "');" << endl;
 }
@@ -429,7 +430,7 @@ LoadParamsAndSteadyStateStatement::LoadParamsAndSteadyStateStatement(const strin
 }
 
 void
-LoadParamsAndSteadyStateStatement::writeOutput(ostream &output, const string &basename) const
+LoadParamsAndSteadyStateStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   for (map<int, string>::const_iterator it = content.begin();
        it != content.end(); it++)
diff --git a/NumericalInitialization.hh b/NumericalInitialization.hh
index c61d41e1490d12f547a6c69e73b74a0a6c886cd0..142838f7206643e28ad5b0f1b21b585dd8c9e343 100644
--- a/NumericalInitialization.hh
+++ b/NumericalInitialization.hh
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2003-2014 Dynare Team
+ * Copyright (C) 2003-2015 Dynare Team
  *
  * This file is part of Dynare.
  *
@@ -40,7 +40,7 @@ public:
   InitParamStatement(int symb_id_arg, const expr_t param_value_arg,
                      const SymbolTable &symbol_table_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void writeCOutput(ostream &output, const string &basename);
   //! Fill eval context with parameter value
   void fillEvalContext(eval_context_t &eval_context) const;
@@ -77,7 +77,7 @@ public:
                    const SymbolTable &symbol_table_arg,
                    const bool &all_values_required_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   //! Writes initializations for oo_.exo_simul and oo_.exo_det_simul
   void writeOutputPostInit(ostream &output) const;
 };
@@ -90,7 +90,7 @@ public:
                   const bool &all_values_required_arg);
   //! Workaround for trac ticket #35
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class HistValStatement : public Statement
@@ -110,7 +110,7 @@ public:
                    const SymbolTable &symbol_table_arg);
   //! Workaround for trac ticket #157
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class InitvalFileStatement : public Statement
@@ -119,7 +119,7 @@ private:
   const string filename;
 public:
   InitvalFileStatement(const string &filename_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class HistvalFileStatement : public Statement
@@ -128,7 +128,7 @@ private:
   const string filename;
 public:
   HistvalFileStatement(const string &filename_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class HomotopyStatement : public Statement
@@ -143,7 +143,7 @@ private:
 public:
   HomotopyStatement(const homotopy_values_t &homotopy_values_arg,
                     const SymbolTable &symbol_table_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class SaveParamsAndSteadyStateStatement : public Statement
@@ -152,7 +152,7 @@ private:
   const string filename;
 public:
   SaveParamsAndSteadyStateStatement(const string &filename_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class LoadParamsAndSteadyStateStatement : public Statement
@@ -166,7 +166,7 @@ public:
   LoadParamsAndSteadyStateStatement(const string &filename,
                                     const SymbolTable &symbol_table_arg,
                                     WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   //! Fill eval context with parameters/variables values
   void fillEvalContext(eval_context_t &eval_context) const;
 };
diff --git a/Shocks.cc b/Shocks.cc
index d0aecd9651417b01a9910e3fe781f9597a9e1465..b2ebd79ed5ee9f9dce353332318759662ba17cad 100644
--- a/Shocks.cc
+++ b/Shocks.cc
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2003-2014 Dynare Team
+ * Copyright (C) 2003-2015 Dynare Team
  *
  * This file is part of Dynare.
  *
@@ -83,7 +83,7 @@ ShocksStatement::ShocksStatement(bool overwrite_arg,
 }
 
 void
-ShocksStatement::writeOutput(ostream &output, const string &basename) const
+ShocksStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "%" << endl
          << "% SHOCKS instructions" << endl
@@ -340,7 +340,7 @@ MShocksStatement::MShocksStatement(bool overwrite_arg,
 }
 
 void
-MShocksStatement::writeOutput(ostream &output, const string &basename) const
+MShocksStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "%" << endl
          << "% MSHOCKS instructions" << endl
@@ -380,7 +380,7 @@ ConditionalForecastPathsStatement::checkPass(ModFileStructure &mod_file_struct,
 }
 
 void
-ConditionalForecastPathsStatement::writeOutput(ostream &output, const string &basename) const
+ConditionalForecastPathsStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   assert(path_length > 0);
   output << "constrained_vars_ = [];" << endl
@@ -420,7 +420,7 @@ MomentCalibration::MomentCalibration(const constraints_t &constraints_arg,
 }
 
 void
-MomentCalibration::writeOutput(ostream &output, const string &basename) const
+MomentCalibration::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "options_.endogenous_prior_restrictions.moment = {" << endl;
   for (size_t i = 0; i < constraints.size(); i++)
@@ -442,7 +442,7 @@ IrfCalibration::IrfCalibration(const constraints_t &constraints_arg,
 }
 
 void
-IrfCalibration::writeOutput(ostream &output, const string &basename) const
+IrfCalibration::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   output << "options_.endogenous_prior_restrictions.irf = {" << endl;
   for (size_t i = 0; i < constraints.size(); i++)
diff --git a/Shocks.hh b/Shocks.hh
index 6ab43a64ada7951a12ae6211523b5f30785cc294..155ef967ca23e883ead847ccd1a3264f7bb0a119 100644
--- a/Shocks.hh
+++ b/Shocks.hh
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2003-2014 Dynare Team
+ * Copyright (C) 2003-2015 Dynare Team
  *
  * This file is part of Dynare.
  *
@@ -77,7 +77,7 @@ public:
                   const covar_and_corr_shocks_t &covar_shocks_arg,
                   const covar_and_corr_shocks_t &corr_shocks_arg,
                   const SymbolTable &symbol_table_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
 };
 
@@ -87,7 +87,7 @@ public:
   MShocksStatement(bool overwrite_arg,
                    const det_shocks_t &det_shocks_arg,
                    const SymbolTable &symbol_table_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class ConditionalForecastPathsStatement : public Statement
@@ -98,7 +98,7 @@ private:
 public:
   ConditionalForecastPathsStatement(const AbstractShocksStatement::det_shocks_t &paths_arg);
   virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class MomentCalibration : public Statement
@@ -117,7 +117,7 @@ private:
 public:
   MomentCalibration(const constraints_t &constraints_arg,
                     const SymbolTable &symbol_table_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class IrfCalibration : public Statement
@@ -136,7 +136,7 @@ private:
 public:
   IrfCalibration(const constraints_t &constraints_arg,
                  const SymbolTable &symbol_table_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 #endif
diff --git a/SigmaeInitialization.cc b/SigmaeInitialization.cc
index acc0a0a3e505954d8635db451b8bc63e21170883..63d6a0b58a78afe9053a68f607a7a94715831aaa 100644
--- a/SigmaeInitialization.cc
+++ b/SigmaeInitialization.cc
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2003-2010 Dynare Team
+ * Copyright (C) 2003-2015 Dynare Team
  *
  * This file is part of Dynare.
  *
@@ -59,7 +59,7 @@ SigmaeStatement::determineMatrixForm(const matrix_t &matrix) throw (MatrixFormEx
 }
 
 void
-SigmaeStatement::writeOutput(ostream &output, const string &basename) const
+SigmaeStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   size_t ic, ic1, ir, ir1;
 
diff --git a/SigmaeInitialization.hh b/SigmaeInitialization.hh
index ddfcc7f10659fe4fcf856f1d1691d2842f6ea843..41e24e3290b04a5ebd7eb534436821f8658ba14a 100644
--- a/SigmaeInitialization.hh
+++ b/SigmaeInitialization.hh
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2003-2010 Dynare Team
+ * Copyright (C) 2003-2015 Dynare Team
  *
  * This file is part of Dynare.
  *
@@ -57,7 +57,7 @@ private:
 
 public:
   SigmaeStatement(const matrix_t &matrix_arg) throw (MatrixFormException);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 #endif
diff --git a/Statement.cc b/Statement.cc
index d4d522e7b7e5f98202a07275c235fab6f0387c60..25cf27329bd66d58f33d73bf2904acb1602251e1 100644
--- a/Statement.cc
+++ b/Statement.cc
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006-2014 Dynare Team
+ * Copyright (C) 2006-2015 Dynare Team
  *
  * This file is part of Dynare.
  *
@@ -79,7 +79,7 @@ NativeStatement::NativeStatement(const string &native_statement_arg) :
 }
 
 void
-NativeStatement::writeOutput(ostream &output, const string &basename) const
+NativeStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
 {
   using namespace boost::xpressive;
   string date_regex = "(-?\\d+([YyAa]|[Mm]([1-9]|1[0-2])|[Qq][1-4]|[Ww]([1-9]{1}|[1-4]\\d|5[0-2])))";
diff --git a/Statement.hh b/Statement.hh
index 5bdade3910b8a77ee145856a92084ae05f13d9e6..eb36d8ba134e374b71ec928603279aed2a107060 100644
--- a/Statement.hh
+++ b/Statement.hh
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006-2014 Dynare Team
+ * Copyright (C) 2006-2015 Dynare Team
  *
  * This file is part of Dynare.
  *
@@ -134,7 +134,7 @@ public:
     \param output is the output stream of the main matlab file
     \param basename is the name of the modfile (without extension) which can be used to build auxiliary files
   */
-  virtual void writeOutput(ostream &output, const string &basename) const = 0;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const = 0;
   virtual void writeCOutput(ostream &output, const string &basename);
 };
 
@@ -144,7 +144,7 @@ private:
   const string native_statement;
 public:
   NativeStatement(const string &native_statement_arg);
-  virtual void writeOutput(ostream &output, const string &basename) const;
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
 class OptionsList