diff --git a/matlab/model_diagnostics.m b/matlab/model_diagnostics.m
index 66858d760045da75d0ccbc5371deca66e0ccd676..b16cdce7aff7c7f98020e4f9c18947d7459d6d5c 100644
--- a/matlab/model_diagnostics.m
+++ b/matlab/model_diagnostics.m
@@ -299,7 +299,9 @@ elseif options_.order >= 2
     [g1, T_order, T] = feval([M_.fname '.sparse.dynamic_g1'], dyn_endo_ss, exo, M_.params, ...
                              dr.ys, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, ...
                              M_.dynamic_g1_sparse_colptr);
-    g2_v = feval([M_.fname '.sparse.dynamic_g2'], dyn_endo_ss, exo, M_.params, dr.ys, T_order, T);
+    if exist(['+' M_.fname '/+sparse/dynamic_g2.m'],"file") || exist(['+' M_.fname '/+sparse/dynamic_g2.' mexext],"file")
+        g2_v = feval([M_.fname '.sparse.dynamic_g2'], dyn_endo_ss, exo, M_.params, dr.ys, T_order, T);
+    end
 end
 
 if any(any(isinf(g1) | isnan(g1)))