diff --git a/matlab/resol.m b/matlab/resol.m
index 94b7cb12167d3d92bef8a07679a6401bad587472..180949e06e14b22226449878bb34a3e539682da0 100644
--- a/matlab/resol.m
+++ b/matlab/resol.m
@@ -1,9 +1,9 @@
-function [dr,info]=resol(ys,check_flag)
-% function [dr,info]=resol(ys,check_flag)
+function [dr,info]=resol(steady_state_0,check_flag)
+% function [dr,info]=resol(steady_state_0,check_flag)
 % Computes first and second order approximations
 %
 % INPUTS
-%    ys:             vector of variables in steady state
+%    steady_state_0: vector of variables in steady state
 %    check_flag=0:   all the approximation is computed
 %    check_flag=1:   computes only the eigenvalues
 %
@@ -60,14 +60,14 @@ if M_.exo_nbr == 0
     oo_.exo_steady_state = [] ;
 end
 
-% check if ys is steady state
+% check if steady_state_0 is steady state
 tempex = oo_.exo_simul;
 oo_.exo_simul = repmat(oo_.exo_steady_state',M_.maximum_lag+M_.maximum_lead+1,1);
 if M_.exo_det_nbr > 0 
     tempexdet = oo_.exo_det_simul;
     oo_.exo_det_simul = repmat(oo_.exo_det_steady_state',M_.maximum_lag+M_.maximum_lead+1,1);
 end
-dr.ys = ys;
+steady_state = steady_state_0;
 check1 = 0;
 % testing for steadystate file
 if (~options_.bytecode)
@@ -75,12 +75,12 @@ if (~options_.bytecode)
 end;
 
 if options_.steadystate_flag
-    [dr.ys,check1] = feval([M_.fname '_steadystate'],dr.ys,...
+    [steady_state,check1] = feval([M_.fname '_steadystate'],steady_state,...
                            [oo_.exo_steady_state; ...
                         oo_.exo_det_steady_state]);
-    if size(dr.ys,1) < M_.endo_nbr 
+    if size(steady_state,1) < M_.endo_nbr 
         if length(M_.aux_vars) > 0
-            dr.ys = add_auxiliary_variables_to_steadystate(dr.ys,M_.aux_vars,...
+            steady_state = add_auxiliary_variables_to_steadystate(steady_state,M_.aux_vars,...
                                                            M_.fname,...
                                                            oo_.exo_steady_state,...
                                                            oo_.exo_det_steady_state,...
@@ -92,53 +92,57 @@ if options_.steadystate_flag
     end
 
 else
-    % testing if ys isn't a steady state or if we aren't computing Ramsey policy
+    % testing if steady_state_0 isn't a steady state or if we aren't computing Ramsey policy
     if  options_.ramsey_policy == 0
         if options_.linear == 0
             % nonlinear models
             if (options_.block == 0 && options_.bytecode == 0)
-                if max(abs(feval(fh,dr.ys,[oo_.exo_steady_state; ...
+                if max(abs(feval(fh,steady_state,[oo_.exo_steady_state; ...
                                         oo_.exo_det_steady_state], M_.params))) > options_.dynatol
-                    [dr.ys,check1] = dynare_solve(fh,dr.ys,options_.jacobian_flag,...
+                    [steady_state,check1] = dynare_solve(fh,steady_state,options_.jacobian_flag,...
                                                   [oo_.exo_steady_state; ...
                                         oo_.exo_det_steady_state], M_.params);
                 end
             else
-                [dr.ys,check1] = dynare_solve_block_or_bytecode(dr.ys,...
+                [steady_state,check1] = dynare_solve_block_or_bytecode(steady_state,...
                                                                 [oo_.exo_steady_state; ...
                                     oo_.exo_det_steady_state], M_.params);
             end;
         else
             % linear models
-            [fvec,jacob] = feval(fh,dr.ys,[oo_.exo_steady_state;...
+            [fvec,jacob] = feval(fh,steady_state,[oo_.exo_steady_state;...
                                 oo_.exo_det_steady_state], M_.params);
             if max(abs(fvec)) > 1e-12
-                dr.ys = dr.ys-jacob\fvec;
+                steady_state = steady_state-jacob\fvec;
             end
         end
     end
 end
 % testing for problem
+dr.ys = steady_state;
+oo_.steady_state = steady_state;
+
 if check1
     if options_.steadystate_flag
         info(1)= 19;
         resid = check1 ;
     else
         info(1)= 20;
-        resid = feval(fh,ys,oo_.exo_steady_state, M_.params);
+        resid = feval(fh,steady_state_0,oo_.exo_steady_state, M_.params);
     end
     info(2) = resid'*resid ;
     return
 end
 
-if ~isreal(dr.ys)
+if ~isreal(steady_state)
     info(1) = 21;
-    info(2) = sum(imag(ys).^2);
-    dr.ys = real(dr.ys);
+    info(2) = sum(imag(steady_state).^2);
+    steady_state = real(steady_state);
+    dr.ys = steady_state;
+    oo_.steady_state = steady_state;
     return
 end
 
-dr.fbias = zeros(M_.endo_nbr,1);
 if options_.block
     [dr,info,M_,options_,oo_] = dr_block(dr,check_flag,M_,options_,oo_);
 else