diff --git a/matlab/DiffuseKalmanSmoother1_Z.m b/matlab/DiffuseKalmanSmoother1_Z.m
index 30a4d8bfa3671b5b85f680b51ce10925210baa87..1beeba5a29c2f59d494312baf47064950e85ece6 100644
--- a/matlab/DiffuseKalmanSmoother1_Z.m
+++ b/matlab/DiffuseKalmanSmoother1_Z.m
@@ -83,7 +83,7 @@ while rank(Pinf(:,:,t+1),crit1) & t<smpl
     Linf(:,:,t)  	= T - Kinf(:,:,t)*Z;
     Fstar(:,:,t) 	= Z*Pstar(:,:,t)*Z';
     Kstar(:,:,t) 	= (T*Pstar(:,:,t)*Z'-Kinf(:,:,t)*Fstar(:,:,t))*iFinf(:,:,t);
-    Pstar(:,:,t+1)	= T*Pstar(:,:,t)*T'-T*Pstar(:,:,t)*Z'*Kinf(:,:,t)'-Kinf(:,:,t)*F*Kstar(:,:,t) + QQ;
+    Pstar(:,:,t+1)	= T*Pstar(:,:,t)*T'-T*Pstar(:,:,t)*Z'*Kinf(:,:,t)'-Kinf(:,:,t)*F*Kstar(:,:,t)' + QQ;
     Pinf(:,:,t+1)	= T*Pinf(:,:,t)*T'-T*Pinf(:,:,t)*Z'*Kinf(:,:,t)';
 end
 d = t;
@@ -99,7 +99,7 @@ while notsteady & t<smpl
     t = t+1;
     v(:,t)      = Y(:,t) - Z*a(:,t);
     P(:,:,t)=tril(P(:,:,t))+transpose(tril(P(:,:,t),-1));
-    F = Z*P(:,:,t)*Z'
+    F = Z*P(:,:,t)*Z';
     if rcond(F) < crit
     	return		
     end    
@@ -150,7 +150,7 @@ if d
     etahat(:,t)		= QRt*r0(:,t);
   end
   r0_0 = Linf(:,:,1)'*r0(:,1);
-  r1_0 = Z'*(iFinf(:,:,1)*v(:,1)-Kstar(:,:,1)*r0(:,1)) + Linf(:,:,1)'*r1(:,1);
+  r1_0 = Z'*(iFinf(:,:,1)*v(:,1)-Kstar(:,:,1)'*r0(:,1)) + Linf(:,:,1)'*r1(:,1);
   alphahat(:,1)  	= a(:,1) + Pstar(:,:,1)*r0_0 + Pinf(:,:,1)*r1_0;
   etahat(:,1)		= QRt*r0(:,1);
 else
diff --git a/matlab/DiffuseKalmanSmoother3_Z.m b/matlab/DiffuseKalmanSmoother3_Z.m
index 942a3237f3412691a5a834c8dd0379a7cb3ed290..343099efb5a771ecbf0cd0f81d6d8a942d6131d3 100644
--- a/matlab/DiffuseKalmanSmoother3_Z.m
+++ b/matlab/DiffuseKalmanSmoother3_Z.m
@@ -253,7 +253,7 @@ if d
         L0(:,:,i,1)'*r0_0 + Linf(:,:,i,1)'*r1_0;
       r0_0 = Linf(:,:,i,1)'*r0_0;
     elseif Fstar(i,1) > crit, % step needed when Finf=0
-      r0_0=transpose(Z(i,:))/Fstar(i,1)*v(i,1)+Li(:,:,i,1)'*r0_0;
+      r0_0=Z(i,:)'/Fstar(i,1)*v(i,1)+Li(:,:,i,1)'*r0_0;
     end
   end
   alphahat(:,1)  	= a1(:,1) + Pstar1(:,:,1)*r0_0 + Pinf1(:,:,1)*r1_0;