diff --git a/matlab/mode_check.m b/matlab/mode_check.m
index 3131f10ccb59fdf6d633ffac96085bbea41e8233..b9a24e3153d152d1cba2c559e15f09cdd7d0d704 100644
--- a/matlab/mode_check.m
+++ b/matlab/mode_check.m
@@ -111,14 +111,22 @@ for plt = 1:nbplt
             end
         end
         xx = x;
-        if x(kk)~=0
+        if x(kk)~=0 || ~isinf(BoundsInfo.lb(kk)) || ~isinf(BoundsInfo.lb(kk))
             l1 = max(BoundsInfo.lb(kk),(1-sign(x(kk))*ll)*x(kk)); m1 = 0; %lower bound
             l2 = min(BoundsInfo.ub(kk),(1+sign(x(kk))*ll)*x(kk)); %upper bound
         else
             %size info for 0 parameter is missing, use prior standard
             %deviation
-            l1 = max(BoundsInfo.lb(kk),-BayesInfo.p2(kk)); m1 = 0; %lower bound
-            l2 = min(BoundsInfo.ub(kk),BayesInfo.p2(kk)); %upper bound
+            upper_bound=BoundsInfo.lb(kk);
+            if isinf(upper_bound)
+                upper_bound=-1e-6*DynareOptions.huge_number;
+            end
+            lower_bound=BoundsInfo.ub(kk);
+            if isinf(lower_bound)
+                lower_bound=-1e-6*DynareOptions.huge_number;
+            end
+            l1 = max(lower_bound,-BayesInfo.p2(kk)); m1 = 0; %lower bound
+            l2 = min(upper_bound,BayesInfo.p2(kk)); %upper bound
         end            
         binding_lower_bound=0;
         binding_upper_bound=0;