diff --git a/matlab/dynare_solve.m b/matlab/dynare_solve.m
index 8dfedc081a253ee901552c35305d5bca494f3511..613b01112a2b7c3d66af3b4946e70b300a488170 100644
--- a/matlab/dynare_solve.m
+++ b/matlab/dynare_solve.m
@@ -42,6 +42,24 @@ nn = size(x,1);
 % checking initial values
 if jacobian_flag
     [fvec,fjac] = feval(func,x,varargin{:});
+    if any(any(isinf(fjac) | isnan(fjac)))
+        [infrow,infcol]=find(isinf(fjac) | isnan(fjac));
+        M=evalin('base','M_'); %get variable names from workspace
+        fprintf('\nSTEADY:  The Jacobian contains Inf or NaN. The problem arises from: \n\n')
+        for ii=1:length(infrow)
+            if infcol(ii)<=M.orig_endo_nbr
+                fprintf('STEADY:  Derivative of Equation %d with respect to Variable %s  (initial value of %s: %g) \n',infrow(ii),M.endo_names(infcol(ii),:),M.endo_names(infcol(ii),:),x(infcol(ii)))
+            else %auxiliary vars
+                orig_var_index=M.aux_vars(1,infcol(ii)-M.orig_endo_nbr).orig_index;
+                fprintf('STEADY:  Derivative of Equation %d with respect to Variable %s  (initial value of %s: %g) \n',infrow(ii),M.endo_names(orig_var_index,:),M.endo_names(orig_var_index,:),x(infcol(ii)))            
+            end
+        end
+        fprintf('\nSTEADY:  The problem most often occurs, because a variable with\n')
+        fprintf('STEADY:  exponent smaller than 1 has been initialized to 0. Taking the derivative\n')
+        fprintf('STEADY:  and evaluating it at the steady state then results in a division by 0.\n')
+        error('An element of the Jacobian is not finite or NaN') 
+    end
+
 else
     fvec = feval(func,x,varargin{:});
     fjac = zeros(nn,nn) ;