diff --git a/matlab/dynare_estimation_1.m b/matlab/dynare_estimation_1.m
index 5fdec1d788152b71dbe714a28b8a1063489a39f8..bd7af83806d6347dfc96df827b254f9ffe48e688 100644
--- a/matlab/dynare_estimation_1.m
+++ b/matlab/dynare_estimation_1.m
@@ -67,6 +67,14 @@ end
 % Set the correlation matrix if necessary.
 if ~isequal(estim_params_.ncx,nnz(tril(M_.Sigma_e,-1)))
     M_.Correlation_matrix = diag(1./sqrt(diag(M_.Sigma_e)))*M_.Sigma_e*diag(1./sqrt(diag(M_.Sigma_e)));
+    % Remove NaNs appearing because of variances calibrated to zero.
+    if any(isnan(M_.Correlation_matrix))
+        zero_variance_idx = find(~diag(M_.Sigma_e));
+        for i=1:length(zero_variance_idx)
+            M_.Correlation_matrix(zero_variance_idx(i),:) = 0;
+            M_.Correlation_matrix(:,zero_variance_idx(i)) = 0;
+        end
+    end
 end
 
 data = dataset_.data;