diff --git a/mex/sources/korderpert/src/k_ord_dynare.cpp b/mex/sources/korderpert/src/k_ord_dynare.cpp
index 7742fff8520cdb3b74f051de0ca971b8d238d954..0fd080364109fa65673a74bf6d2cfea67b00c59b 100644
--- a/mex/sources/korderpert/src/k_ord_dynare.cpp
+++ b/mex/sources/korderpert/src/k_ord_dynare.cpp
@@ -402,6 +402,10 @@ Vector * KordpDynare::LLxSteady( const Vector& yS){
 		mexPrintf(" Error in LLxSteady - wrong index?");
 	}
 
+#ifdef DEBUG		
+	for (int j=0;j<nJcols-nExog;j++)
+			mexPrintf("LLxSteady: [%d] =%f .\n", j, (*llxSteady)[j]);
+#endif	
 	return llxSteady;
 }
 
diff --git a/mex/sources/korderpert/src/k_order_perturbation.cpp b/mex/sources/korderpert/src/k_order_perturbation.cpp
index 0b71101f759a25ba5523c67712732b010e0f66ae..f68dfc08014ba382bf2a20fb3f104e59a7be50ea 100644
--- a/mex/sources/korderpert/src/k_order_perturbation.cpp
+++ b/mex/sources/korderpert/src/k_order_perturbation.cpp
@@ -269,39 +269,43 @@ extern "C" {
     		else
             	irf_list_ind = ((const DynareNameList&)dynare.getExogNames()).selectIndices(params.irf_list);
     ****************/			
-			try {
 				// intiate tensor library
 #ifdef DEBUG		
-		mexPrintf("k_order_perturbation: Call tls init\n");
+	mexPrintf("k_order_perturbation: Call tls init\n");
 #endif
-                tls.init(dynare.order(),
-					dynare.nstat()+2*dynare.npred()+3*dynare.nboth()+
-					2*dynare.nforw()+dynare.nexog());
-                
-				// construct main K-order approximation class
+            tls.init(dynare.order(),
+				dynare.nstat()+2*dynare.npred()+3*dynare.nboth()+
+				2*dynare.nforw()+dynare.nexog());
+            
+			// construct main K-order approximation class
 //				FistOrderApproximation app(dynare, journal, nSteps);
 #ifdef DEBUG		
-		mexPrintf("k_order_perturbation: Call Approximation constructor \n");
+	mexPrintf("k_order_perturbation: Call Approximation constructor \n");
 #endif
-				Approximation app(dynare, journal, nSteps);
-                // run stochastic steady 
+			Approximation app(dynare, journal, nSteps);
+            // run stochastic steady 
 #ifdef DEBUG		
-		mexPrintf("k_order_perturbation: Calling walkStochSteady.\n");
+	mexPrintf("k_order_perturbation: Calling walkStochSteady.\n");
 #endif			
-                app.walkStochSteady();		
-
-			} catch (const KordException& e) {
-				// tell about the exception and continue
-				printf("Caught (not yet fatal) Kord exception: ");
-				e.print();
-				JournalRecord rec(journal);
-				rec << "Solution routine not finished (" << e.get_message()
-					<< "), see what happens" << endrec; 
-			} catch (const TLException& e) {
-				mexErrMsgTxt("Caugth TL exception.");
-			} catch (SylvException& e) {
-				mexErrMsgTxt("Caught Sylv exception.");
-            }
+            app.walkStochSteady();		
+
+			// open mat file
+			std::string matfile(fName);//(params.basename);
+			matfile += ".mat";
+			FILE* matfd = NULL;
+			if (NULL == (matfd=fopen(matfile.c_str(), "wb"))) {
+				fprintf(stderr, "Couldn't open %s for writing.\n", matfile.c_str());
+				exit(1);
+			}
+
+			std::string ss_matrix_name(fName);//params.prefix);
+			ss_matrix_name += "_steady_states";
+			ConstTwoDMatrix(app.getSS()).writeMat4(matfd, ss_matrix_name.c_str());
+
+			// write the folded decision rule to the Mat-4 file
+			app.getFoldDecisionRule().writeMat4(matfd, fName);//params.prefix);
+
+			fclose(matfd);
 
 			/***********************            
 			std::string ss_matrix_name("K_ordp");//params.prefix);
diff --git a/mex/sources/korderpert/src/k_order_test_main.cpp b/mex/sources/korderpert/src/k_order_test_main.cpp
index 4b537ffb4de993c7d43d939ddbe1570059765ba4..f8c9487cff5b8164b045e7215e50566072c02ee6 100644
--- a/mex/sources/korderpert/src/k_order_test_main.cpp
+++ b/mex/sources/korderpert/src/k_order_test_main.cpp
@@ -215,8 +215,7 @@ int main(int argc, char* argv[])
 			mexPrintf("k_order_perturbation: Calling walkStochSteady.\n");
 #endif			
             app.walkStochSteady();		
-			
-			
+						
 			// open mat file
 			std::string matfile(fName);//(params.basename);
 			matfile += ".mat";