diff --git a/src/shared/algorithms/NAS/NAS.cpp b/src/shared/algorithms/NAS/NAS.cpp
index d84b39d311d8fa80e2892d47f71b07cf983a5c22..099e557b7632b2caabd3e31a2253eaa724fadd16 100644
--- a/src/shared/algorithms/NAS/NAS.cpp
+++ b/src/shared/algorithms/NAS/NAS.cpp
@@ -299,40 +299,34 @@ void NAS::correctAcc(const AccelerometerData& acc)
     correctAcc(accV.normalized());
 }
 
-void NAS::correctPitot(const float deltaP, const float staticP)
+void NAS::correctPitot(const float airspeed)
 {
-    if (deltaP >= 0)
+    // Correct with pitot airspeed only if the airspeed is greater than zero. Do
+    // not correct otherwise
+    if (airspeed > 0)
     {
-        float c      = 343;  // Speed of sound
+        Matrix<float, 1, 1> R(config.SIGMA_PITOT);
+        // Take the already estimated velocities
         Vector3f vel = x.block<3, 1>(IDX_VEL, 0);
-        float vPitot;
 
-        if (vel.norm() / c >= 0.9419)
-        {
-            float rho = 1.225;  // Air density
-            vPitot    = -sqrtf(
-                   fabs(-2.0f * c * c +
-                        sqrtf((4.0f * powf(c, 4) + 8.0f * c * c * deltaP / rho))));
-        }
-        else
-        {
-            float gamma = 1.4;  // Heat capacity ratio of dry air
-            float p0    = staticP + deltaP;
-            vPitot =
-                -sqrtf(c * c * 2 / (gamma - 1) *
-                       fabs(powf((p0 / staticP), (gamma - 1) / gamma) - 1));
-        }
+        Matrix<float, 1, 3> H = Matrix<float, 1, 3>::Zero();
+        H.coeffRef(0, 2)      = -x[5] / airspeed;
 
-        Matrix<float, 1, 6> H = Matrix<float, 1, 6>::Zero();
-        H.coeffRef(0, 5)      = 1;
+        // Take covariance matrix for the velocities
+        Matrix<float, 3, 3> Pl = P.block<3, 3>(IDX_VEL, IDX_VEL);
+        Matrix<float, 1, 1> S  = H * Pl * H.transpose() + R;
 
-        Matrix<float, 6, 6> Pl = P.block<6, 6>(0, 0);
-        Matrix<float, 1, 1> S =
-            H * Pl * H.transpose() + Matrix<float, 1, 1>(config.SIGMA_PITOT);
+        // Correct with the pitot only if S is invertible
+        if (S[0] != 0)
+        {
+            // Compute the kalman Gain
+            Matrix<float, 3, 1> K = Pl * H.transpose() * S.inverse();
+
+            x.block<3, 1>(IDX_VEL, 0) = vel + K * (-airspeed - x[5]);
 
-        Matrix<float, 6, 1> K = Pl * H.transpose() * S.inverse();
-        x.head<6>()           = x.head<6>() + K * (vPitot - x[5]);
-        P.block<6, 6>(0, 0)   = (Matrix<float, 6, 6>::Identity() - K * H) * Pl;
+            P.block<3, 3>(IDX_VEL, IDX_VEL) =
+                (Matrix<float, 3, 3>::Identity() - K * H) * Pl;
+        }
     }
 }
 
diff --git a/src/shared/algorithms/NAS/NAS.h b/src/shared/algorithms/NAS/NAS.h
index a200c215b76adc4f4c65b969900bf097f4b5f973..56f7d8bc12c487bb01455ebfe8b3c4c9dc31898c 100644
--- a/src/shared/algorithms/NAS/NAS.h
+++ b/src/shared/algorithms/NAS/NAS.h
@@ -134,10 +134,9 @@ public:
      *
      * Do not call this function after apogee!
      *
-     * @param deltaP Delta pressure measured by the differential sensor [Pa].
-     * @param staticP Static pressure [Pa].
+     * @param airspeed Speed of air calculated by the Pitot.
      */
-    void correctPitot(const float deltaP, const float staticP);
+    void correctPitot(const float airspeed);
 
     /**
      * @return EKF state.