diff --git a/matlab/kalman/likelihood/kalman_filter_d.m b/matlab/kalman/likelihood/kalman_filter_d.m
index 79b3607fb21de53cfc895071501657715dc9c332..48c0d91c4aa8246af8a47f8e059345e6e78c1745 100644
--- a/matlab/kalman/likelihood/kalman_filter_d.m
+++ b/matlab/kalman/likelihood/kalman_filter_d.m
@@ -65,7 +65,7 @@ dLIK = Inf;                % Default value of the log likelihood.
 oldK = Inf;
 s    = 0;
 
-while rank(Pinf,diffuse_kalman_tol) && (t<=last)
+while rank(Z*Pinf*Z',diffuse_kalman_tol) && (t<=last)
     s = t-start+1;
     v = Y(:,t)-Z*a;                                                     %get prediction error v^(0) in (5.13) DK (2012)
     Finf  = Z*Pinf*Z';                                                  % (5.7) in DK (2012)
diff --git a/matlab/kalman/likelihood/univariate_kalman_filter_d.m b/matlab/kalman/likelihood/univariate_kalman_filter_d.m
index ce78d2421497d1c570081d334910d611ae21dd55..6abe6b9a780859cccf2f9d5596f4719e7a2f3f76 100644
--- a/matlab/kalman/likelihood/univariate_kalman_filter_d.m
+++ b/matlab/kalman/likelihood/univariate_kalman_filter_d.m
@@ -154,7 +154,7 @@ while newRank && (t<=last)
         end
     end
     if newRank
-        oldRank = rank(Pinf,diffuse_kalman_tol);
+        oldRank = rank(Z*Pinf*Z',diffuse_kalman_tol);
     else
         oldRank = 0;
     end
@@ -162,7 +162,7 @@ while newRank && (t<=last)
     Pstar = T*Pstar*T'+QQ;
     Pinf  = T*Pinf*T';
     if newRank
-        newRank = rank(Pinf,diffuse_kalman_tol);
+        newRank = rank(Z*Pinf*Z',diffuse_kalman_tol);
     end
     if oldRank ~= newRank
         disp('univariate_diffuse_kalman_filter:: T does influence the rank of Pinf!')