diff --git a/matlab/partial_information/PI_gensys.m b/matlab/partial_information/PI_gensys.m
index c392cc65963cb2e8b634148992e65f69b6f2996e..de63ba9a0e59fa4825b2ff9a9103091811b6f081 100644
--- a/matlab/partial_information/PI_gensys.m
+++ b/matlab/partial_information/PI_gensys.m
@@ -84,14 +84,12 @@ try
     if singular == 1 || strcmp('MATLAB:nearlySingularMatrix',LastWarningID) == 1 || ...
                  strcmp('MATLAB:illConditionedMatrix',LastWarningID)==1 || ...
                  strcmp('MATLAB:singularMatrix',LastWarningID)==1 
-        [C1,C2,C3,C4, C5, F1, F2, F3, F4, F5, M1, M2, UAVinv, FL_RANK] = PI_gensys_singularC(C1,C2,C3,C4, C5, F1, F2, F3, F4, F5, 0);
-        V02=[V02 V01*M2];
-        V01=V01*M1;
+        [C1,C2,C3,C4, C5, F1, F2, F3, F4, F5, M1, M2, UAVinv, FL_RANK, V01, V02] = PI_gensys_singularC(C1,C2,C3,C4, C5, F1, F2, F3, F4, F5, V01, V02, 0);
     end
     warning('on','MATLAB:singularMatrix');
     warning('on','MATLAB:nearlySingularMatrix');
-    if (any(any(isinf(UAVinv))) || any(any(isnan(UAVinv))))
-        if(options_.useACES==1)
+    if (any(any(isinf(UAVinv))) || any(any(isnan(UAVinv)))) 
+        if(options_.ACES_solver==1)
             disp('ERROR! saving PI_gensys_data_dump');
             save PI_gensys_data_dump
             error('PI_gensys: Inversion of poss. zero matrix UAVinv=inv(U02''*a1*V02)!');
@@ -102,11 +100,9 @@ try
         end
     end
 catch
-    lerror = lasterror;
-    errmsg = lerror.message;
-    disp(errmsg)
-    warning(['error callig PI_gensys_singularC: ' errmsg ],'errcode');
-    error('errcode',['error callig PI_gensys_singularC: ' errmsg ]);
+    errmsg=lasterror;
+    warning(['error callig PI_gensys_singularC: ' errmsg.message ],'errmsg.identifier');
+    %error('errcode',['error callig PI_gensys_singularC: ' errmsg.message ]);
 end
 %
 % Define TT1, TT2
diff --git a/matlab/partial_information/PI_gensys_singularC.m b/matlab/partial_information/PI_gensys_singularC.m
index da9f69b03b0473a316dce286cc6a9b0629f8f1b8..5dc26ec63aae5c94b0ff02de4b03745a81922127 100644
--- a/matlab/partial_information/PI_gensys_singularC.m
+++ b/matlab/partial_information/PI_gensys_singularC.m
@@ -1,6 +1,6 @@
-function [C1,C2,C3,C4, C5, F1, F2, F3, F4, F5, M1, M2, UAVinv, FL_RANK]=PI_gensys_singularC(C1in, C2in, C3in, C4in, C5in, F1, F2, F3, F4, F5, level)
-% [C1,C2,C3,C4, C5, F1, F2, F3, F4, F5, M1, M2, UAVinv,FL_RANK]...
-%         =PI_gensys_singularC(C1in, C2in, C3in, C4in, C5in, F1, F2, F3, F4, F5, level)
+function [C1,C2,C3,C4, C5, F1, F2, F3, F4, F5, M1, M2, UAVinv, FL_RANK, V01, V02]=PI_gensys_singularC(C1in, C2in, C3in, C4in, C5in, F1, F2, F3, F4, F5, V01, V02, level)
+% [C1,C2,C3,C4, C5, F1, F2, F3, F4, F5, M1, M2, UAVinv,FL_RANK, V01, V02]...
+%         =PI_gensys_singularC(C1in, C2in, C3in, C4in, C5in, F1, F2, F3, F4, F5, V01, V02, level)
 % 
 % Recursive extension for PI_gensys function PCL general DSGE solver
 % devised by Prof. Joseph Pearlman 
@@ -60,6 +60,10 @@ F4 =[M*F4  M*F3*M2];
 F3 = M*F3*M1;
 F2 =[M*F2  M*F1*M2];
 F1 = M*F1*M1;
+
+V02=[V02 V01*M2];
+V01=V01*M1;
+
 warning('', '');
 singular=0;
 try
@@ -76,7 +80,7 @@ try
     if  singular==1 || strcmp('MATLAB:nearlySingularMatrix',LastWarningID)==1 || ...
                  strcmp('MATLAB:illConditionedMatrix',LastWarningID)==1 || ...
                  strcmp('MATLAB:singularMatrix',LastWarningID)==1
-        [C1,C2,C3,C4, C5, F1, F2, F3, F4, F5, M1, M2, UAVinv, FL_RANK] = PI_gensys_singularC(C1,C2,C3,C4, C5, F1, F2, F3, F4, F5, level);
+        [C1,C2,C3,C4, C5, F1, F2, F3, F4, F5, M1, M2, UAVinv, FL_RANK, V01, V02] = PI_gensys_singularC(C1,C2,C3,C4, C5, F1, F2, F3, F4, F5, V01, V02, level);
     end
 catch
     [errmsg, errcode]=lasterr;