diff --git a/matlab/perfect-foresight-models/perfect_foresight_solver_core.m b/matlab/perfect-foresight-models/perfect_foresight_solver_core.m
index c4c49fa6acee02a3c05107f2f6dd8ab5ed332d96..ae509608737d76b6469c8b91bf1caeb5d6092ac5 100644
--- a/matlab/perfect-foresight-models/perfect_foresight_solver_core.m
+++ b/matlab/perfect-foresight-models/perfect_foresight_solver_core.m
@@ -75,10 +75,10 @@ else
             oo_.deterministic_simulation.status = false;
         end
     else
-        if M_.maximum_endo_lead == 0 % Purely backward model
+        if M_.maximum_endo_lead == 0 && ~options_.lmmcp.status % Purely backward model
             [oo_.endo_simul, oo_.deterministic_simulation] = ...
                 sim1_purely_backward(oo_.endo_simul, oo_.exo_simul, oo_.steady_state, M_, options_);
-        elseif M_.maximum_endo_lag == 0 % Purely forward model
+        elseif M_.maximum_endo_lag == 0 && ~options_.lmmcp.status % Purely forward model
         [oo_.endo_simul, oo_.deterministic_simulation] = ...
             sim1_purely_forward(oo_.endo_simul, oo_.exo_simul, oo_.steady_state, M_, options_);
         else % General case
diff --git a/matlab/perfect-foresight-models/private/initialize_stacked_problem.m b/matlab/perfect-foresight-models/private/initialize_stacked_problem.m
index f127858c97acf92a5381ed472c1b63754ddd9b46..007a5036e710b77cb0adcacf842a96a1508d692f 100644
--- a/matlab/perfect-foresight-models/private/initialize_stacked_problem.m
+++ b/matlab/perfect-foresight-models/private/initialize_stacked_problem.m
@@ -30,7 +30,7 @@ function [options, y0, yT, z, i_cols, i_cols_J1, i_cols_T, i_cols_j, i_cols_1, i
 % - i_cols_J0           [double] indices of contemporaneous variables appearing in M.lead_lag_incidence (relevant in problems with periods=1)
 % - dynamicmodel        [handle] function handle to _dynamic-file
 
-% Copyright (C) 2015-2019 Dynare Team
+% Copyright (C) 2015-2020 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -73,22 +73,25 @@ end
 if M.maximum_lag > 0
     y0 = endogenousvariables(:, M.maximum_lag);
 else
-    y0 = NaN(ny, 1);
+    y0 = NaN(M.endo_nbr, 1);
 end
 if M.maximum_lead > 0
     yT = endogenousvariables(:, M.maximum_lag+periods+1);
 else
-    yT = NaN(ny, 1);
+    yT = NaN(M.endo_nbr, 1);
 end
 z = endogenousvariables(:,M.maximum_lag+(1:periods));
 illi = M.lead_lag_incidence';
 [i_cols,~,i_cols_j] = find(illi(:));
-illi = illi(:,2:3);
+if M.maximum_lag == 0
+    i_cols = i_cols + M.endo_nbr;
+end
+illi = illi(:,(1+M.maximum_lag):(1+M.maximum_lag+M.maximum_lead));
 [i_cols_J1,~,i_cols_1] = find(illi(:));
-i_cols_T = nonzeros(M.lead_lag_incidence(1:2,:)');
+i_cols_T = nonzeros(M.lead_lag_incidence(1:(1+M.maximum_lag),:)');
 if periods==1
-    i_cols_0 = nonzeros(M.lead_lag_incidence(2,:)');
-    i_cols_J0 = find(M.lead_lag_incidence(2,:)');
+    i_cols_0 = nonzeros(M.lead_lag_incidence(1+M.maximum_lag,:)');
+    i_cols_J0 = find(M.lead_lag_incidence(1+M.maximum_lag,:)');
 else
     i_cols_0 = [];
     i_cols_J0 = [];
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 89a6731c6c9b3ac37e0d2f0f5d280335dc3bd237..df2537bd9aae46e32fecd162a9b1502e502604e8 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -4,6 +4,8 @@ MODFILES = \
 	moments/example1_hp_test.mod \
 	moments/fs2000_post_moments.mod \
 	lmmcp/rbcii.mod \
+	lmmcp/purely_backward.mod \
+	lmmcp/purely_forward.mod \
 	ep/rbc_mc.mod \
 	estimation/TaRB/fs2000_tarb.mod \
 	observation_trends_and_prefiltering/MCMC/Trend_loglin_no_prefilt_first_obs_MC.mod \
diff --git a/tests/lmmcp/purely_backward.mod b/tests/lmmcp/purely_backward.mod
new file mode 100644
index 0000000000000000000000000000000000000000..7d3bce2727b07f51fde7fa06944eb5527c381e7b
--- /dev/null
+++ b/tests/lmmcp/purely_backward.mod
@@ -0,0 +1,40 @@
+// Regression test for bug #1720 (in the purely backward case)
+
+var y;
+
+varexo eps;
+
+parameters rho;
+
+rho = 0.9;
+
+model;
+  [ mcp = 'y>1' ]
+  y = y(-1)^rho*exp(eps);
+end;
+
+initval;
+    y = 1;
+  eps = 0;
+end;
+
+steady;
+
+check;
+
+shocks;
+    var eps;
+    periods 1 10;
+    values -1 1;
+end;
+
+perfect_foresight_setup(periods=20);
+perfect_foresight_solver(lmmcp);
+
+if ~oo_.deterministic_simulation.status
+   error('Perfect foresight simulation failed')
+end
+
+if any(oo_.endo_simul < 1)
+  error('y>1 constraint not enforced')
+end
diff --git a/tests/lmmcp/purely_forward.mod b/tests/lmmcp/purely_forward.mod
new file mode 100644
index 0000000000000000000000000000000000000000..eb61ad29e818032de7d2ef66c48587a8ce943f36
--- /dev/null
+++ b/tests/lmmcp/purely_forward.mod
@@ -0,0 +1,36 @@
+// Regression test for bug #1720 (in the purely forward case)
+
+var y;
+
+varexo eps;
+
+model;
+  [ mcp='y>1' ]
+  y = sqrt(y(1))*exp(eps);
+end;
+
+initval;
+  y = 1;
+end;
+
+steady;
+
+check;
+
+
+shocks;
+    var eps;
+    periods 1 10;
+    values 1 -1;
+end;
+
+perfect_foresight_setup(periods=20);
+perfect_foresight_solver(lmmcp);
+
+if ~oo_.deterministic_simulation.status
+   error('Perfect foresight simulation failed')
+end
+
+if any(oo_.endo_simul < 1)
+  error('y>1 constraint not enforced')
+end