diff --git a/matlab/schur_statespace_transformation.m b/matlab/schur_statespace_transformation.m
index c9bdec8a9baeb4c93fb90cd7eb94238ff95c7229..3cf0d3a6b05d85b9a30c0bc7cc16cd3f6c8e04eb 100644
--- a/matlab/schur_statespace_transformation.m
+++ b/matlab/schur_statespace_transformation.m
@@ -52,20 +52,8 @@ function [Z,ST,R1,QT,Pstar,Pinf] = schur_statespace_transformation(mf,T,R,Q,qz_c
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
 np = size(T,1);
-if nargin == 6,
-    indx = restrict_columns;
-    indx0=find(~ismember([1:np],indx));
-else
-    indx=(find(max(abs(T))>0));
-    indx0=(find(max(abs(T))==0));
-end
-T0=T(indx0,indx); %static variables vs. dynamic ones
-R0=R(indx0,:); % matrix of shocks for static variables
 
-% perform Kitagawa transformation only for non-zero columns of T
-T=T(indx,indx);
-R=R(indx,:);
-np = size(T,1);
+% perform Kitagawa transformation 
 [QT,ST] = schur(T);
 e1 = abs(ordeig(ST)) > 2-qz_criterium;
 [QT,ST] = ordschur(QT,ST,e1);
@@ -73,7 +61,9 @@ k = find(abs(ordeig(ST)) > 2-qz_criterium);
 nk = length(k);
 nk1 = nk+1;
 Pstar = zeros(np,np);
-B = QT'*R*Q*R'*QT;
+R1 = QT'*R;
+B = R1*Q*R1';
+% computes variance of stationary block (lower right)
 i = np;
 while i >= nk+2
     if ST(i,i-1) == 0
@@ -113,47 +103,20 @@ if i == nk+1
     c = ST(nk+1,:)*(Pstar(:,nk+2:end)*ST(nk1,nk+2:end)')+ST(nk1,nk1)*ST(nk1,nk+2:end)*Pstar(nk+2:end,nk1);
     Pstar(nk1,nk1)=(B(nk1,nk1)+c)/(1-ST(nk1,nk1)*ST(nk1,nk1));
 end
-
-R1 = QT'*R;
-ST1=ST;
-
-% now I recover stationarized static variables
-% using 
-% ss = s-z and
-% z-z(-1) (growth rates of unit roots) only depends on stationary variables
-np0=length(indx0);
-Pstar = blkdiag(zeros(np0),Pstar);
-ST = [zeros(length(Pstar),length(indx0)) [T0*QT ;ST]];
-R1 = [R0; R1];
-ST0=ST;
-ST0(:,1:np0+nk)=0;
-ST0(np0+1:np0+nk,:)=0;
-ST0(1:np0,np0+nk+1:end) = ST(1:np0,np0+nk+1:end)-ST(1:np0,np0+1:np0+nk)*ST(np0+1:np0+nk,np0+nk+1:end);
-R10 = R1;
-R10(np0+1:np0+nk,:)=0;
-R10(1:np0,:) = R1(1:np0,:)-ST(1:np0,np0+1:np0+nk)*R1(np0+1:np0+nk,:);
-Pstar = ...
-     ST0*Pstar*ST0'+ ...
-         R10*Q*R10';
-QT = blkdiag(eye(np0),QT);
-QT(1:np0,np0+1:np0+nk) = QT(1:np0,np0+1:np0+nk)+ST(1:np0,np0+1:np0+nk);
-% reorder QT entries 
-QT([indx0(:); indx(:)],:) = QT; 
 Z = QT(mf,:);
-ST(1:np0,:) = ST0(1:np0,:);
-R1(1:np0,:) = R10(1:np0,:);
+
 
 % stochastic trends with no influence on observed variables are
 % arbitrarily initialized to zero
 Pinf = zeros(np,np);
 Pinf(1:nk,1:nk) = eye(nk);
-[QQ,RR,EE] = qr(Z*ST(:,1+np0:nk+np0),0);
-k = find(abs(diag([RR; zeros(nk-size(Z,1),size(RR,2))])) < 1e-8);
+[QQ,RR,EE] = qr(Z*ST,0);
+k = find(abs(diag(RR)) < 1e-8);
 if length(k) > 0
     k1 = EE(:,k);
     dd =ones(nk,1);
     dd(k1) = zeros(length(k1),1);
     Pinf(1:nk,1:nk) = diag(dd);
 end
-Pinf = blkdiag(zeros(np0),Pinf);
+