diff --git a/matlab/+pac/+estimate/iterative_ols.m b/matlab/+pac/+estimate/iterative_ols.m
index 1de639bb3ae0ab5cd76fd87aeee48d4f0998dc79..2e7c456b840757dbee2ee96644a075ccd17d3d55 100644
--- a/matlab/+pac/+estimate/iterative_ols.m
+++ b/matlab/+pac/+estimate/iterative_ols.m
@@ -197,10 +197,10 @@ if is_exogenous_variables
             j = j+1;
             is_any_estimated_parameter_x = true;
             listofvariables2{j} = variable;
-            dataForExogenousVariables = [dataForExogenousVariables, additive.scaling_factor(i)*data{variable}.lag(additive.lags(i))];
+            dataForExogenousVariables = [dataForExogenousVariables, additive.scaling_factor(i)*data{variable}.lag(-additive.lags(i))];
         else
             is_any_calibrated_parameter_x = true;
-            tmp = data{variable}.lag(additive.lags(i)).data;
+            tmp = data{variable}.lag(-additive.lags(i)).data;
             if ~isnan(additive.params(i))
                 tmp = M_.params(additive.params(i))*tmp;
             end
@@ -234,10 +234,10 @@ if is_optim_exogenous_variables
             j = j+1;
             is_any_estimated_parameter_optim_x = true;
             listofvariables4{j} = variable;
-            dataForOptimExogenousVariables = [dataForOptimExogenousVariables, optim_additive.scaling_factor(i)*data{variable}.lag(optim_additive.lags(i))];
+            dataForOptimExogenousVariables = [dataForOptimExogenousVariables, optim_additive.scaling_factor(i)*data{variable}.lag(-optim_additive.lags(i))];
         else
             is_any_calibrated_parameter_optim_x = true;
-            tmp = data{variable}.lag(optim_additive.lags(i)).data;
+            tmp = data{variable}.lag(-optim_additive.lags(i)).data;
             if ~isnan(optim_additive.params(i))
                 tmp = M_.params(optim_additive.params(i))*tmp;
             end