diff --git a/matlab/discretionary_policy_engine.m b/matlab/discretionary_policy_engine.m
index 864ea377f88eae57ce17f803f5d11b1e666c6014..67aef9f237e132b7e374ba7075083c8d1b63a112 100644
--- a/matlab/discretionary_policy_engine.m
+++ b/matlab/discretionary_policy_engine.m
@@ -95,24 +95,24 @@ while 1
H10=H1;
F10=F1;
end
-retcode=rcode-1;
-switch retcode
+retcode = 0;
+switch rcode
case 3 % nan
- retcode=3;
+ retcode=63;
retcode(2)=10000;
if verbose
disp([mfilename,':: NAN elements in the solution'])
end
case 2% maxiter
- retcode = 1
+ retcode = 61
if verbose
disp([mfilename,':: Maximum Number of Iterations reached'])
end
case 1
BadEig=max(abs(eig(H1)))>qz_criterium;
if BadEig
- retcode=3;
+ retcode=62;
retcode(2)=100*max(abs(eig(H1)));
if verbose
disp([mfilename,':: Some eigenvalues greater than qz_criterium, Model potentially unstable'])
diff --git a/matlab/print_info.m b/matlab/print_info.m
index 7c1a3bd1672a8eed64fe2146da05ea02c5532525..49741989021553260569533c823256207179832d 100644
--- a/matlab/print_info.m
+++ b/matlab/print_info.m
@@ -68,7 +68,16 @@ if ~noprint
error('You are estimating a DSGE-VAR model, but the value of the dsge prior weight is too low!')
case 52 %DsgeVarLikelihood
error('');
-
+ case 61 %Discretionary policy
+ error(['Discretionary policy: maximum number of iterations has ' ...
+ 'been reached. Procedure failed. ']);
+ case 62
+ error(['Discretionary policy: some eigenvalues greater than ' ...
+ 'options_.qz_criterium. Model potentially unstable.']);
+ case 63
+ error(['Discretionary policy: NaN elements are present in the ' ...
+ 'solution. Procedure failed.']);
+
% Aim Code Conversions by convertAimCodeToInfo.m
case 102
error('Aim: roots not correctly computed by real_schur.');