diff --git a/commonFunctions/control/control_Interp.m b/commonFunctions/control/control_Interp.m
index 940cd0ce56e8096774081fa7bd22c3c239a3b23d..edc39063dec6d57fc3b1802f19fe607deaa80111 100644
--- a/commonFunctions/control/control_Interp.m
+++ b/commonFunctions/control/control_Interp.m
@@ -1,4 +1,4 @@
-function [alpha0,contSettings] = control_Interp(z,Vz,settings,contSettings,alpha0_old)
+function [alpha0,contSettings] = control_Interp(z,Vz,settings,contSettings,alpha0_old,Theta)
 
 % HELP
 %
@@ -68,6 +68,15 @@ if z>settings.z_final
     alpha0_base = settings.servo.maxAngle;
 end
 
+% alpha0_base = alpha0_base*1/Theta;
+% 
+% if alpha0_base<0
+%     alpha0_base = 0;
+% end
+% if alpha0_base>settings.servo.maxAngle
+%     alpha0_base = settings.servo.maxAngle;
+% end
+
 % filter control action
 if contSettings.flagFirstControlABK == false % the first reference is given the fastest possible (unfiltered), then filter
     alpha0 = alpha0_old + (alpha0_base - alpha0_old)*contSettings.filter_coeff;
diff --git a/commonFunctions/control/control_MRAC.m b/commonFunctions/control/control_MRAC.m
index 0e1fb7f8b82e83f0acb496fad90eafa0967f507c..f8c8bcd7fa71262e11a2b20d126dbe0ebb0b1a1d 100644
--- a/commonFunctions/control/control_MRAC.m
+++ b/commonFunctions/control/control_MRAC.m
@@ -1,4 +1,4 @@
-function  [alpha_rad,store] = control_MRAC(z,vz,sensorData,contSettings,store)
+function  [alpha_rad,store,Theta] = control_MRAC(z,vz,sensorData,contSettings,store)
 %{
 -sensorData.kalman.z-settings.z0 = z
 -sensorData.kalman.vz = v
@@ -31,11 +31,11 @@ B_p = [0 1]';
 Gamma_x = 0.0001;
 Gamma_r = 0.0001;
 Gamma_th = 0.001;
-Q = 0.5*eye(2);
+Q = 5*eye(2);
 P = lyap(A_ref',Q);
 
 % function phi
-phi = 0.5 * vz^2  ;
+phi = -0.5 * vz^2  ;
 % phi =  vz  ;
 
 
@@ -54,14 +54,27 @@ for i = 2:N
 end
 x_ref= x_ref(:,i);
 
+% N = 200;
+% f = @(x) A_ref*x+B_ref*u_ref;
+% t = linspace(0,dt,N);
+% states = length(store.x0);
+% h = dt/N;
+% x = zeros(states,N);
+% x(:,1) = store.x0;
+%     for i = 1:length(t)-1
+%         xp1 = x(:,i) + h/2*f(x(:,i));
+%         xp2 = x(:,i) + h/2*f(xp1);
+%         xp3 = x(:,i) + h*f(xp2);
+%         x(:,i+1) = x(:,i) + h*(1/6*f(x(:,i)) + 1/3*f(xp1) + 1/3*f(xp2) + 1/6*f(xp3) );
+%     end
+% 
+% x_ref = x(:,end)
+
 
 % error
 e = ([z;vz]-x_ref);
-% e = z-x_ref(1);
-% Projection operator
-% Gamma = Gamma_th;
-% eps_proj = 0.002;
-% theta_M = 1e-3;
+
+
 
 
 % Forward euler
@@ -69,8 +82,11 @@ for i = 1:N
    
     K_x = store.K_x(:,i) - Gamma_x*x_ref*e'*P*B_p*dt;
     K_r = store.K_r(:,i) - Gamma_r*r*e'*P*B_p*dt;
-    Theta = store.Theta(:,i) - Gamma_th*phi*e'*P*B_p*dt;
+    Theta = store.Theta(:,i) + Gamma_th*phi*e'*P*B_p*dt;
 
+if Theta > 800
+    Theta = 800;
+end 
     store.K_x(:,i+1) = K_x ;
     store.K_r(:,i+1) = K_r ;
     store.Theta(:,i+1) = Theta;
@@ -92,9 +108,10 @@ for i = 1:N
 end 
 %% 
 % control action
- % alpha_rad =  K_x'*[z vz]' + K_r*r  - Theta*phi;
-K = 0.5*[10 0.5];
-alpha_rad = 1/Theta * (K*e);
+ % alpha_rad =  Theta*(K_x'*[z vz]' + K_r*r)  ;
+ K = 0.8*[10 0];
+% K = K_x';
+alpha_rad = 1/Theta* (K*e);
  % u =  K_x'*[z vz]'   - Theta*phi;
 
 % translated in servo angle
@@ -119,9 +136,9 @@ alpha_rad = 1/Theta * (K*e);
 % delta_S = S - S_nom;
 % alpha_rad = delta_S/0.009564;
 % estension = getEstension(delta_S);
-
-if alpha_rad > 1.1  && vz>10
-    alpha_rad = 1.1;
+% settings.servo.maxAngle
+if alpha_rad > 1.17  && vz>10 % mettere settings ------------------------------------------------- CAMBIAREEEEEEEEEEEEEEEEEEEE
+    alpha_rad = 1.17;
 elseif alpha_rad < 0 || vz<10
     alpha_rad = 0;
 end 
diff --git a/data/Gemini_Portugal_October_2023/Trajectories.mat b/data/Gemini_Portugal_October_2023/Trajectories.mat
index 09c60d6188cc6b8553d9a10d50869f3fd4ab8654..dc406552cf699439cddcd7e50a7e62bc2c6a49d5 100644
Binary files a/data/Gemini_Portugal_October_2023/Trajectories.mat and b/data/Gemini_Portugal_October_2023/Trajectories.mat differ
diff --git a/data/Gemini_Portugal_October_2023/configGemini_Portugal_October_2023.m b/data/Gemini_Portugal_October_2023/configGemini_Portugal_October_2023.m
index 91a97fb1803f27cd6e07e0ce0c12eb6adb26b3b8..028a9d1043ee934145de50d6669f38a427b82550 100644
--- a/data/Gemini_Portugal_October_2023/configGemini_Portugal_October_2023.m
+++ b/data/Gemini_Portugal_October_2023/configGemini_Portugal_October_2023.m
@@ -159,4 +159,4 @@ settings.mea.R                   = 0.36;
 settings.mea.z_shutdown          = 3200;                                    % [m] target apogee prediction for shutdown
 settings.mea.t_lower_shadowmode  = 0;                                       % minimunm burning time
 settings.mea.t_higher_shadowmode = 10;                                      % maximum burning time
-settings.shutdownValveDelay      = 0.6;                                     % time from the shut down command to the actual valve closure
\ No newline at end of file
+settings.shutdownValveDelay      = 0.3;                                     % time from the shut down command to the actual valve closure
\ No newline at end of file
diff --git a/simulator/MontecarloResults/Gemini_Portugal_October_2023/complete/200sim_Mach80_gaussian_07_Dec_2023__21_20_23/completeResults07_Dec_2023__21_20_23.txt b/simulator/MontecarloResults/Gemini_Portugal_October_2023/complete/200sim_Mach80_gaussian_07_Dec_2023__21_20_23/completeResults07_Dec_2023__21_20_23.txt
new file mode 100644
index 0000000000000000000000000000000000000000..877de9f2f8c1badaed08fbcdf36fe0c93638cb36
Binary files /dev/null and b/simulator/MontecarloResults/Gemini_Portugal_October_2023/complete/200sim_Mach80_gaussian_07_Dec_2023__21_20_23/completeResults07_Dec_2023__21_20_23.txt differ
diff --git a/simulator/configs/configMontecarlo.m b/simulator/configs/configMontecarlo.m
index 633281bcf4142ad69708cc5a7aa9fa3b9b07a574..265a1d2e6f72f67a10c777ff0e3ba0fb9f8ce37d 100644
--- a/simulator/configs/configMontecarlo.m
+++ b/simulator/configs/configMontecarlo.m
@@ -14,7 +14,7 @@ if settings.montecarlo
 
 %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% settable parameters %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % how many simulations
-N_sim = 500; % set to at least 500
+N_sim = 200; % set to at least 500
 simulationType_thrust = "gaussian";  % "gaussian", "exterme"
 displayIter = true; % set to false if you don't want to see the iteration number (maybe if you want to run Montecarlos on hpe)
 
diff --git a/simulator/configs/configWind.m b/simulator/configs/configWind.m
index c7fed6056cc19db9d62b4bbafe67a751fa583efb..552dd0e937de037e1e2d45c2ef9e090b8b40d328 100644
--- a/simulator/configs/configWind.m
+++ b/simulator/configs/configWind.m
@@ -13,7 +13,7 @@ NOTE: wind azimuth angle indications (wind directed towards):
 
 
 % select which model you want to use:
-settings.windModel = "multiplicative"; % choose between: "constant" "multiplicative" "atmospheric"
+settings.windModel = "multipicative"; % choose between: "constant" "multiplicative" "atmospheric"
 
 
 
@@ -64,8 +64,8 @@ if conf.script == "simulator"
             settings.wind.input = false;
             settings.wind.model = false;
 
-            settings.wind.MagMin    =   0;                        % [m/s] Minimum Magnitude
-            settings.wind.MagMax    =   0;                        % [m/s] Maximum Magnitude
+            settings.wind.MagMin    =   8;                        % [m/s] Minimum Magnitude
+            settings.wind.MagMax    =   8;                        % [m/s] Maximum Magnitude
             settings.wind.ElMin     =   0*pi/180;                 % [rad] Minimum Elevation, user input in degrees (ex. 0)
             settings.wind.ElMax     =   0*pi/180;                 % [rad] Maximum Elevation, user input in degrees (ex. 0) (Max == 90 Deg)
             settings.wind.AzMin     =  (180)*pi/180;              % [rad] Minimum Azimuth, user input in degrees (ex. 90)
diff --git a/simulator/src/std_plots.m b/simulator/src/std_plots.m
index 705e58dfcd95b3b3ed25cf4cabcbece348bcb691..f52a697f15bac1de4f5ee63d2d49fbc0c4894df5 100644
--- a/simulator/src/std_plots.m
+++ b/simulator/src/std_plots.m
@@ -161,6 +161,20 @@ xlabel("Time")
 ylabel("Gain")
 title("Estimated Theta")
 
+figure()
+plot(simOutput.ARB.x0(1,:))
+hold on
+xlabel("Time")
+ylabel("height")
+yyaxis right
+plot(simOutput.ARB.x0(2,:))
+ylabel("height")
+title("Reference state")
+
+
+
+
+
 
 return
 
@@ -381,6 +395,9 @@ v_ned = quatrotate(quatconj(structIn.Y(:, 10:13)), structIn.Y(:, 4:6));
 plot( -structIn.Y(:, 3), -v_ned(:,3),'b','DisplayName','Traj')
 plot( -structIn.sensors.nas.states(:,3),  -structIn.sensors.nas.states(:,6),'m--','DisplayName','NAS')
 % plot( structIn.ADA(:,4),  structIn.ADA(:,5),'b','DisplayName','ADA z')
+plot(simOutput.ARB.x0(1,:),'DisplayName','z_ref')
+plot(simOutput.ARB.x0(2,:),'DisplayName','vz_ref')
+
 yyaxis right
 plot( -structIn.Y(:, 3), structIn.Y(:, 14),'g','DisplayName','arb')
 
diff --git a/simulator/src/std_run.m b/simulator/src/std_run.m
index ce0951ecc9ff2137dc34820439a3f097d016029c..81f7f18006855bc7d5ffd1a37d10a7b0b8d4653f 100644
--- a/simulator/src/std_run.m
+++ b/simulator/src/std_run.m
@@ -554,9 +554,9 @@ if settings.montecarlo
 
 
     % sensors - SFD
-    struct_out.sensors.sfd.pressure = interp1(struct_out.sensors.sfd.time',struct_out.sensors.sfd.pressure',t_vec);
-    struct_out.sensors.sfd = rmfield(struct_out.sensors.sfd,'faults');
-    struct_out.sensors.sfd.time = t_vec;
+    % struct_out.sensors.sfd.pressure = interp1(struct_out.sensors.sfd.time',struct_out.sensors.sfd.pressure',t_vec);
+    % struct_out.sensors.sfd = rmfield(struct_out.sensors.sfd,'faults');
+    % struct_out.sensors.sfd.time = t_vec;
 
     % sensors - remove unwanted fields
     struct_out.sensors = rmfield(struct_out.sensors,{'barometer_sens','barometer','comb_chamber','imu','gps','pitot'});
diff --git a/simulator/src/std_run_parts/run_ARB_SIM.m b/simulator/src/std_run_parts/run_ARB_SIM.m
index e8f1df02c0c616e7dc7eb034283048409b1bbc19..b7c07ebfbe4e7aa6592a3de08fe07b89245037e2 100644
--- a/simulator/src/std_run_parts/run_ARB_SIM.m
+++ b/simulator/src/std_run_parts/run_ARB_SIM.m
@@ -30,10 +30,10 @@ switch true % set this value in configControl.m
 
     case strcmp(contSettings.algorithm,'interp') || strcmp(contSettings.algorithm,'complete')
         % help in the function
-
-        % [ap_ref_new,contSettings] = control_Interp(-sensorData.kalman.z-settings.z0,-sensorData.kalman.vz,settings,contSettings,ap_ref_old); % cambiare nome alla funzione tra le altre cose
-          [ap_ref_new,store] = control_MRAC(-sensorData.kalman.z-settings.z0,-sensorData.kalman.vz,sensorData,contSettings,store);
-       
+[ap_ref_new,store,Theta] = control_MRAC(-sensorData.kalman.z-settings.z0,-sensorData.kalman.vz,sensorData,contSettings,store);
+          
+          [~,contSettings] = control_Interp(-sensorData.kalman.z-settings.z0,-sensorData.kalman.vz,settings,contSettings,ap_ref_old,Theta); % cambiare nome alla funzione tra le altre cose
+          
         
     case strcmp (contSettings.algorithm,'shooting')
         % shooting algorithm:
diff --git a/trajectoryGeneration/mainTrajectoryGeneration.m b/trajectoryGeneration/mainTrajectoryGeneration.m
index 45ab8d5cd7a43bd598751d64a6fd90995ad02662..c9ace26517240e160ea9ccc28027f73eb46e3bed 100644
--- a/trajectoryGeneration/mainTrajectoryGeneration.m
+++ b/trajectoryGeneration/mainTrajectoryGeneration.m
@@ -55,10 +55,10 @@ configSimulator;
 
 %% AIRBRAKES RADIAL EXTENSION
 % Airbrakes extension vector
-delta_alpha_values  = linspace(settings.servo.minAngle,settings.servo.maxAngle,2);
+delta_alpha_values  = linspace(settings.servo.minAngle,settings.servo.maxAngle,10);
 [deltaX_values] = extension_From_Angle(delta_alpha_values, settings);
 %%%%% MRAC 
-delta_alpha  = (delta_alpha_values(2) + delta_alpha_values(1))/2;
+delta_alpha  = delta_alpha_values(5) ;
 [deltaX_values] = extension_From_Angle(delta_alpha, settings);
 %%%%%
 % I exclude the limits for robustness