diff --git a/matlab/initial_estimation_checks.m b/matlab/initial_estimation_checks.m
index 91b59e6e352535dd90c641d5c1ebb4f88544a525..08926fae872b8ae29bd4239b0bacaaf183ea4800 100644
--- a/matlab/initial_estimation_checks.m
+++ b/matlab/initial_estimation_checks.m
@@ -31,7 +31,11 @@ function DynareResults = initial_estimation_checks(objective_function,xparam1,Dy
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
 if DynareDataset.info.nvobs>Model.exo_nbr+EstimatedParameters.nvn
-    error(['initial_estimation_checks:: Estimation can''t take place because there are less shocks than observed variables!'])
+    error(['initial_estimation_checks:: Estimation can''t take place because there are less declared shocks than observed variables!'])
+end
+
+if DynareDataset.info.nvobs>find(diag(Model.Sigma_e))+EstimatedParameters.nvn
+    error(['initial_estimation_checks:: Estimation can''t take place because too many shocks have been calibrated with a zero variance!'])
 end
 
 % check if steady state solves static model (except if diffuse_filter == 1)