diff --git a/matlab/kalman/likelihood/missing_observations_kalman_filter.m b/matlab/kalman/likelihood/missing_observations_kalman_filter.m
index 67b3adf6143d50501acb09497181ca29816850f8..8b01c37e610b09829c908947280b32fa9d2dd0eb 100644
--- a/matlab/kalman/likelihood/missing_observations_kalman_filter.m
+++ b/matlab/kalman/likelihood/missing_observations_kalman_filter.m
@@ -72,13 +72,14 @@ if isequal(H,0)
     H = zeros(pp,pp);
 end
 
+P=tril(P)+transpose(tril(P,-1)); % make sure P is symmetric
+
 % Get sample size.
 smpl = last-start+1;
 
 % Initialize some variables.
-dF   = 1;
 isqvec = false;
-if ndims(Q)>2
+if ~ismatrix(Q)
     Qvec = Q;
     Q=Q(:,:,1);
     isqvec = true;
diff --git a/matlab/kalman/likelihood/missing_observations_kalman_filter_d.m b/matlab/kalman/likelihood/missing_observations_kalman_filter_d.m
index 3c3724b3b7f1d5fa7b288c6e8e25ece24e1743ef..3eba355cac3ccb3a44e0cc7e37ba4b4f59873f83 100644
--- a/matlab/kalman/likelihood/missing_observations_kalman_filter_d.m
+++ b/matlab/kalman/likelihood/missing_observations_kalman_filter_d.m
@@ -64,9 +64,8 @@ function [dLIK,dlik,a,Pstar] = missing_observations_kalman_filter_d(data_index,n
 smpl = last-start+1;
 
 % Initialize some variables.
-dF   = 1;
 isqvec = false;
-if ndims(Q)>2
+if ~ismatrix(Q)
     Qvec = Q;
     Q=Q(:,:,1);
     isqvec = true;
@@ -75,7 +74,6 @@ QQ   = R*Q*transpose(R);   % Variance of R times the vector of structural innova
 t    = start;              % Initialization of the time index.
 dlik = zeros(smpl,1);      % Initialization of the vector gathering the densities.
 dLIK = Inf;                % Default value of the log likelihood.
-oldK = Inf;
 
 if isequal(H,0)
     H = zeros(pp,pp);