diff --git a/matlab/simult_.m b/matlab/simult_.m
index 5b7e358028cc32889079154669696a2e12f404d0..aab1ad97216853fa1cf45aebbe82244ddb9bc059 100644
--- a/matlab/simult_.m
+++ b/matlab/simult_.m
@@ -41,7 +41,7 @@ y_(:,1) = y0;
 
 if ~options_.k_order_solver
     if iorder==1
-        y_(:,1) = y_(:,1) - dr.ys;
+        y_(:,1) = y_(:,1)-dr.ys;
     end
 end
 
@@ -71,13 +71,15 @@ else
     k2 = k2(:,1)+(M_.maximum_lag+1-k2(:,2))*M_.endo_nbr;
     switch iorder
       case 1
-        if isempty(dr.ghu)
+        if isempty(dr.ghu)% For (linearized) deterministic models.
             for i = 2:iter+M_.maximum_lag
                 yhat = y_(dr.order_var(k2),i-1);
                 y_(dr.order_var,i) = dr.ghx*yhat;
             end
+        elseif isempty(dr.ghx)% For (linearized) purely forward variables (no state variables).
+            y_(dr.order_var,:) = dr.ghu*transpose(ex_);
         else
-            epsilon = dr.ghu*transpose(ex_); clear('ex_');
+            epsilon = dr.ghu*transpose(ex_);
             for i = 2:iter+M_.maximum_lag
                 yhat = y_(dr.order_var(k2),i-1);
                 y_(dr.order_var,i) = dr.ghx*yhat + epsilon(:,i-1);