diff --git a/src/modules/ekf2/EKF/aid_sources/magnetometer/mag_control.cpp b/src/modules/ekf2/EKF/aid_sources/magnetometer/mag_control.cpp index c3a6d9eae6..a52cdff330 100644 --- a/src/modules/ekf2/EKF/aid_sources/magnetometer/mag_control.cpp +++ b/src/modules/ekf2/EKF/aid_sources/magnetometer/mag_control.cpp @@ -190,11 +190,13 @@ void Ekf::controlMagFusion(const imuSample &imu_sample) _control_status.flags.mag_3D = common_conditions_passing && (_params.ekf2_mag_type == static_cast(MagFuseType::AUTO)) - && _control_status.flags.mag_aligned_in_flight; + && _control_status.flags.mag_aligned_in_flight + && !_control_status.flags.constant_pos; _control_status.flags.mag_hdg = common_conditions_passing && ((_params.ekf2_mag_type == static_cast(MagFuseType::HEADING)) - || (_params.ekf2_mag_type == static_cast(MagFuseType::AUTO) && !_control_status.flags.mag_3D)); + || (_params.ekf2_mag_type == static_cast(MagFuseType::AUTO) && !_control_status.flags.mag_3D)) + && !_control_status.flags.constant_pos; } if (_control_status.flags.mag_3D && !_control_status_prev.flags.mag_3D) {