diff --git a/matlab/osr.m b/matlab/osr.m
index 325ab943b78525e14106361b1d7cb48cf8b00e1d..59ecda15dd146fca54602d5d8c30555b7df58927 100644
--- a/matlab/osr.m
+++ b/matlab/osr.m
@@ -1,4 +1,4 @@
-function osr(var_list,params,i_var,W)
+function osr_res = osr(var_list,params,i_var,W)
 
 % Copyright (C) 2001-2012 Dynare Team
 %
@@ -37,6 +37,6 @@ end
 skipline()
 disp('OPTIMAL SIMPLE RULE')
 skipline()
-osr1(i_params,i_var,W);
+osr_res = osr1(i_params,i_var,W);
 
 stoch_simul(var_list);
\ No newline at end of file
diff --git a/matlab/osr1.m b/matlab/osr1.m
index 385d0c095907d505e10d8882b4597ab09bb98a22..c6a617b5b608173389bd0e053714f3f230a7e0b0 100644
--- a/matlab/osr1.m
+++ b/matlab/osr1.m
@@ -1,4 +1,4 @@
-function osr1(i_params,i_var,weights)
+function osr_res = osr1(i_params,i_var,weights)
 % Compute the Optimal Simple Rules
 % INPUTS
 %   i_params                  vector           index of optimizing parameters in M_.params
@@ -68,7 +68,10 @@ end
 %%do actual optimization
 [f,p]=csminwel1('osr_obj',t0,H0,[],crit,nit,options_.gradient_method,options_.gradient_epsilon,i_params,...
                 inv_order_var(i_var),weights(i_var,i_var));
-oo_.osr.objective_function = f;
+osr_res.objective_function = f;
+for i=1:length(i_params)
+    osr_res.optim_params.(deblank(M_.param_names(i_params(i),:))) = p(i);
+end
 
 %  options = optimset('fminunc');
 %  options = optimset('display','iter');
diff --git a/preprocessor/ComputingTasks.cc b/preprocessor/ComputingTasks.cc
index ae7649105a0cfe86e8b44b55a792c1e7b5817865..05d6576dae7fe9a9c574e48cfcdcaaa495e800b7 100644
--- a/preprocessor/ComputingTasks.cc
+++ b/preprocessor/ComputingTasks.cc
@@ -834,7 +834,7 @@ OsrStatement::writeOutput(ostream &output, const string &basename) const
 {
   options_list.writeOutput(output);
   symbol_list.writeOutput("var_list_", output);
-  output << "osr(var_list_,osr_params_,obj_var_,optim_weights_);\n";
+  output << "oo_.osr = osr(var_list_,osr_params_,obj_var_,optim_weights_);\n";
 }
 
 OptimWeightsStatement::OptimWeightsStatement(const var_weights_t &var_weights_arg,
diff --git a/tests/Makefile.am b/tests/Makefile.am
index f388aa14fc0a6c79167e5dde8086fb3f24ff083a..a4568470df090eef2dfefd7179d8b4091bc3e122 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -18,7 +18,7 @@ MODFILES = \
 	example1_abs_sign.mod \
 	example1_macroif.mod \
 	t_sgu_ex1.mod \
-	osr_example.mod \
+	optimal_policy/osr_example.mod \
 	optimal_policy/ramsey.mod \
 	optimal_policy/nk_ramsey.mod \
 	optimal_policy/nk_ramsey_expectation.mod \
diff --git a/tests/osr_example.mod b/tests/optimal_policy/osr_example.mod
similarity index 100%
rename from tests/osr_example.mod
rename to tests/optimal_policy/osr_example.mod