diff --git a/meson.build b/meson.build
index 41748b1494b59a6974c5172cbf84320398b1221b..e9ce6d58f9e5a4a147d829791e57baac4bebca97 100644
--- a/meson.build
+++ b/meson.build
@@ -1287,6 +1287,8 @@ mod_and_m_tests = [
   { 'test' : [ 'deterministic_simulations/rbc_det2.mod' ] },
   { 'test' : [ 'deterministic_simulations/rbc_det3.mod' ] },
   { 'test' : [ 'deterministic_simulations/rbc_det4.mod' ] },
+  { 'test' : [ 'deterministic_simulations/rbc_det4_endval_initval_xfail.mod' ],
+    'should_fail' : true },
   { 'test' : [ 'deterministic_simulations/rbc_det5.mod' ] },
   { 'test' : [ 'deterministic_simulations/rbc_det6.mod' ] },
   { 'test' : [ 'deterministic_simulations/homotopy.mod' ] },
diff --git a/preprocessor b/preprocessor
index 63f04636ee848b3c70905e3f78dd51ba25cfc506..ac35ef610143695ec5e1e9b74a8fdff4803b6ac0 160000
--- a/preprocessor
+++ b/preprocessor
@@ -1 +1 @@
-Subproject commit 63f04636ee848b3c70905e3f78dd51ba25cfc506
+Subproject commit ac35ef610143695ec5e1e9b74a8fdff4803b6ac0
diff --git a/tests/deterministic_simulations/rbc_det4_endval_initval_xfail.mod b/tests/deterministic_simulations/rbc_det4_endval_initval_xfail.mod
new file mode 100644
index 0000000000000000000000000000000000000000..e40c4f2697af5cf3ac51b04fdaf026c5a3765c94
--- /dev/null
+++ b/tests/deterministic_simulations/rbc_det4_endval_initval_xfail.mod
@@ -0,0 +1,86 @@
+// Checks that having an initval after an endval block triggers an error
+// See preprocessor#104
+
+var Capital, Output, Labour, Consumption, Efficiency, efficiency, ExpectedTerm;
+
+varexo EfficiencyInnovation;
+
+parameters beta, theta, tau, alpha, psi, delta, rho, effstar, sigma2;
+
+beta    =   0.9900;
+theta   =   0.3570;
+tau     =   2.0000;
+alpha   =   0.4500;
+psi     =  -0.1000;
+delta   =   0.0200;
+rho     =   0.8000;
+effstar =   1.0000;
+sigma2  =   0;
+
+model(block,bytecode,cutoff=0);
+
+  // Eq. n°1:
+  efficiency = rho*efficiency(-1) + EfficiencyInnovation;
+
+  // Eq. n°2:
+  Efficiency = effstar*exp(efficiency);
+
+  // Eq. n°3:
+  Output = Efficiency*(alpha*(Capital(-1)^psi)+(1-alpha)*(Labour^psi))^(1/psi);
+
+  // Eq. n°4:
+  Capital = Output-Consumption + (1-delta)*Capital(-1);
+
+  // Eq. n°5:
+  ((1-theta)/theta)*(Consumption/(1-Labour)) - (1-alpha)*(Output/Labour)^(1-psi);
+
+  // Eq. n°6:
+  (((Consumption^theta)*((1-Labour)^(1-theta)))^(1-tau))/Consumption  = ExpectedTerm(1);
+
+  // Eq. n°7:
+  ExpectedTerm = beta*((((Consumption^theta)*((1-Labour)^(1-theta)))^(1-tau))/Consumption)*(alpha*((Output/Capital(-1))^(1-psi))+(1-delta));
+
+end;
+
+steady_state_model;
+efficiency = EfficiencyInnovation/(1-rho);
+Efficiency = effstar*exp(efficiency);
+Output_per_unit_of_Capital=((1/beta-1+delta)/alpha)^(1/(1-psi));
+Consumption_per_unit_of_Capital=Output_per_unit_of_Capital-delta;
+Labour_per_unit_of_Capital=(((Output_per_unit_of_Capital/Efficiency)^psi-alpha)/(1-alpha))^(1/psi);
+Output_per_unit_of_Labour=Output_per_unit_of_Capital/Labour_per_unit_of_Capital;
+Consumption_per_unit_of_Labour=Consumption_per_unit_of_Capital/Labour_per_unit_of_Capital;
+
+% Compute steady state share of capital.
+ShareOfCapital=alpha/(alpha+(1-alpha)*Labour_per_unit_of_Capital^psi);
+
+% Compute steady state of the endogenous variables.
+Labour=1/(1+Consumption_per_unit_of_Labour/((1-alpha)*theta/(1-theta)*Output_per_unit_of_Labour^(1-psi)));
+Consumption=Consumption_per_unit_of_Labour*Labour;
+Capital=Labour/Labour_per_unit_of_Capital;
+Output=Output_per_unit_of_Capital*Capital;
+ExpectedTerm=beta*((((Consumption^theta)*((1-Labour)^(1-theta)))^(1-tau))/Consumption)
+             *(alpha*((Output/Capital)^(1-psi))+1-delta);
+end;
+
+endval;
+EfficiencyInnovation = (1-rho)*log(1.05);
+end;
+
+steady;
+
+initval;
+EfficiencyInnovation = 0;
+end;
+
+steady;
+
+perfect_foresight_setup(periods=300);
+perfect_foresight_solver;
+
+if ~oo_.deterministic_simulation.status
+   error('Perfect foresight simulation failed')
+end
+
+rplot Consumption;
+rplot Capital;