diff --git a/matlab/dynare.m b/matlab/dynare.m
index 569b2975a6d14b4d9205ab7bbac6033dcf9bb1ff..369c43b9c1799429fd171a1956718cfe6217f4f2 100644
--- a/matlab/dynare.m
+++ b/matlab/dynare.m
@@ -283,4 +283,9 @@ end
 if ~ isempty(find(abs(fname) == 46))
     fname = fname(:,1:find(abs(fname) == 46)-1) ;
 end
+
+% We need to clear the driver (and only the driver, because the "clear all"
+% within the driver will clean the rest)
+clear(['+' fname '/driver'])
+
 evalin('base',[fname '.driver']) ;
diff --git a/matlab/getH.m b/matlab/getH.m
index 1c06dbadeef99791beb6c300ee47e155d15473f3..a7de28bc0893bf77a7e2add2578301c729963614 100644
--- a/matlab/getH.m
+++ b/matlab/getH.m
@@ -201,11 +201,11 @@ else
         end
     end
     if nargout>5
-        [df, gp, d2f, gpp, hp] = feval([M_.fname,'_params_derivs'],yy0, oo_.exo_steady_state', ...
+        [df, gp, d2f, gpp, hp] = feval([M_.fname,'.dynamic_params_derivs'],yy0, oo_.exo_steady_state', ...
                                        M_.params, oo_.dr.ys, 1, dyssdtheta, d2yssdtheta);
         H2ss = d2yssdtheta(oo_.dr.order_var,indx,indx);
     else
-        [df, gp] = feval([M_.fname,'_params_derivs'],yy0, repmat(oo_.exo_steady_state',[M_.maximum_exo_lag+M_.maximum_exo_lead+1,1]), ...
+        [df, gp] = feval([M_.fname,'.dynamic_params_derivs'],yy0, repmat(oo_.exo_steady_state',[M_.maximum_exo_lag+M_.maximum_exo_lead+1,1]), ...
                          M_.params, oo_.dr.ys, 1, dyssdtheta,d2yssdtheta);
         [residual, g1, g2 ] = feval([M_.fname,'.dynamic'],yy0, repmat(oo_.exo_steady_state',[M_.maximum_exo_lag+M_.maximum_exo_lead+1,1]), ...
                                     M_.params, oo_.dr.ys, 1);
diff --git a/mex/sources/bytecode/Interpreter.cc b/mex/sources/bytecode/Interpreter.cc
index 0e254241791f69b56e5c47a66db5e62f054dca38..bb986cff8d0d1d492d7cdb240a9a845634a253d6 100644
--- a/mex/sources/bytecode/Interpreter.cc
+++ b/mex/sources/bytecode/Interpreter.cc
@@ -587,7 +587,7 @@ Interpreter::ReadCodeFile(string file_name, CodeLoad &code)
   if (!code_liste.size())
     {
       ostringstream tmp;
-      tmp << " in compute_blocks, " << file_name.c_str() << " cannot be opened\n";
+      tmp << " in compute_blocks, " << file_name << ".cod cannot be opened\n";
       throw FatalExceptionHandling(tmp.str());
     }
   if (block >= (int) code.get_block_number())
diff --git a/tests/block_bytecode/run_ls2003.m b/tests/block_bytecode/run_ls2003.m
index 0b1d898e343d413c32514f48bf10b5f05dc7af02..892f842290dbb987fca53d6c07e8e22d303bc731 100644
--- a/tests/block_bytecode/run_ls2003.m
+++ b/tests/block_bytecode/run_ls2003.m
@@ -17,11 +17,6 @@ function run_ls2003(block, bytecode, solve_algo, stack_solve_algo)
 % You should have received a copy of the GNU General Public License
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
-  % Workaround for a strange race condition under Octave
-  if exist('ls2003_tmp.m') == 2
-      delete('ls2003_tmp.m')
-  end
-
   disp(['TEST: ls2003 (block=' num2str(block) ', bytecode=' ...
       num2str(bytecode) ', solve_algo=' num2str(solve_algo) ...
       ', stack_solve_algo=' num2str(stack_solve_algo) ')...']);