diff --git a/matlab/dynare_estimation_1.m b/matlab/dynare_estimation_1.m
index dff111975101d18d3d5b5321003eef70ffbe8d72..b821aeb93abd43d221bb8aa486996ca1f65a818c 100644
--- a/matlab/dynare_estimation_1.m
+++ b/matlab/dynare_estimation_1.m
@@ -438,7 +438,11 @@ if ~options_.mh_posterior_mode_estimation && options_.cova_compute
 end
 
 if options_.mode_check == 1 && ~options_.mh_posterior_mode_estimation && options_.cova_compute
-    mode_check(xparam1,0,hh,gend,data,lb,ub,data_index,number_of_observations,no_more_missing_observations);
+    if options_.cova_compute
+        mode_check(xparam1,0,hh,gend,data,lb,ub,data_index,number_of_observations,no_more_missing_observations);
+    else
+        mode_check(xparam1,0,[],gend,data,lb,ub,data_index,number_of_observations,no_more_missing_observations);
+    end
 end
 
 if ~options_.mh_posterior_mode_estimation && options_.cova_compute
diff --git a/matlab/mode_check.m b/matlab/mode_check.m
index b32eaefc37ab4c0c8809a6bb7531c6c6d9958d1e..b8eaa71faeaadc3d613a8a0d3f9493f0a55e446c 100644
--- a/matlab/mode_check.m
+++ b/matlab/mode_check.m
@@ -38,20 +38,25 @@ function mode_check(x,fval,hessian,gend,data,lb,ub,data_index,number_of_observat
 global bayestopt_ M_ options_
 
 TeX = options_.TeX;
-[ s_min, k ] = min(diag(hessian)) ;
+if ~isempty(hessian);
+    [ s_min, k ] = min(diag(hessian));
+end
 if options_.dsge_var
     fval = DsgeVarLikelihood(x,gend);
 else
     fval = DsgeLikelihood(x,gend,data,data_index,number_of_observations,no_more_missing_observations);    
 end    
-bayestopt_.penalty=fval;  
-disp(' ')
-disp('MODE CHECK')
-disp(' ')
-disp(sprintf('Fval obtained by the minimization routine: %f', fval))
-disp(' ')
-if s_min<eps
-    disp(sprintf('Most negative variance %f for parameter %d (%s = %f)', s_min, k , bayestopt_.name{k}, x(k)))
+bayestopt_.penalty=fval;
+
+if ~isempty(hessian);
+    disp(' ')
+    disp('MODE CHECK')
+    disp(' ')
+    disp(sprintf('Fval obtained by the minimization routine: %f', fval))
+    disp(' ')
+    if s_min<eps
+        disp(sprintf('Most negative variance %f for parameter %d (%s = %f)', s_min, k , bayestopt_.name{k}, x(k)))
+    end
 end
 
 [nbplt,nr,nc,lr,lc,nstar] = pltorg(length(x));