diff --git a/matlab/dynare_estimation_1.m b/matlab/dynare_estimation_1.m
index 457755371dabcfc549a1a532ab3338a0cfcbb0ee..1f0cc9f9b173b796c99b4510bf3c81ed5e4de200 100644
--- a/matlab/dynare_estimation_1.m
+++ b/matlab/dynare_estimation_1.m
@@ -221,7 +221,14 @@ if ~isequal(options_.mode_compute,0) && ~options_.mh_posterior_mode_estimation
         if options_.analytic_derivation,
             optim_options = optimset(optim_options,'GradObj','on');
         end
-        [xparam1,fval,exitflag] = fminunc(objective_function,xparam1,optim_options,dataset_,options_,M_,estim_params_,bayestopt_,oo_);
+        if ~exist('OCTAVE_VERSION')
+            [xparam1,fval,exitflag] = fminunc(objective_function,xparam1,optim_options,dataset_,options_,M_,estim_params_,bayestopt_,oo_);
+        else
+            % Under Octave, use a wrapper, since fminunc() does not have a 4th arg
+            func = @(x) objective_function(x, dataset_,options_,M_,estim_params_,bayestopt_,oo_);
+            [xparam1,fval,exitflag] = fminunc(func,xparam1,optim_options);
+        end
+
       case 4
         H0 = 1e-4*eye(nx);
         crit = 1e-7;