diff --git a/A320-main.xml b/A320-main.xml
index be7548fd..0396be03 100644
--- a/A320-main.xml
+++ b/A320-main.xml
@@ -1321,6 +1321,7 @@
 								setprop("/it-autoflight/sound/apoffsound2", 0);
 							}
 							setprop("/it-autoflight/output/ap-warning", 0);
+							setprop("/ECAM/warnings/master-warning-light", 0);
 						}
 					</script>
 				</binding>
diff --git a/Nasal/FMGC-b.nas b/Nasal/FMGC-b.nas
index 71a9639d..7039a699 100644
--- a/Nasal/FMGC-b.nas
+++ b/Nasal/FMGC-b.nas
@@ -708,7 +708,7 @@ var ap_various = func {
 	}
 	
 	if (getprop("/it-autoflight/output/ap1") == 1 or getprop("/it-autoflight/output/ap2") == 1) {
-		if (getprop("/controls/flight/aileron") > 0.2 or getprop("/controls/flight/aileron") < -0.2 or getprop("/controls/flight/elevator") > 0.2 or getprop("/controls/flight/elevator") < -0.2) {
+		if (getprop("/controls/flight/aileron") > 0.2 or getprop("/controls/flight/aileron") < -0.2 or getprop("/controls/flight/elevator") > 0.2 or getprop("/controls/flight/elevator") < -0.2 or getprop("/controls/flight/rudder") > 0.2 or getprop("/controls/flight/rudder") < -0.2) {
 			setprop("/it-autoflight/input/ap1", 0);
 			setprop("/it-autoflight/input/ap2", 0);
 			libraries.apOff("hard", 0);
diff --git a/Nasal/it-fbw.nas b/Nasal/it-fbw.nas
index 61464975..55cf2e90 100644
--- a/Nasal/it-fbw.nas
+++ b/Nasal/it-fbw.nas
@@ -208,7 +208,9 @@ var update_loop = func {
 		if (getprop("/it-fbw/protections/overspeed") != 1) {
 			setprop("/it-fbw/protections/overspeed", 1);
 		}
-		libraries.apOff("hard", 0);
+		if (getprop("/it-autoflight/input/ap1") == 1 or getprop("/it-autoflight/input/ap2") == 1) {
+			libraries.apOff("hard", 0);
+		}
 	} else {
 		if (getprop("/it-fbw/protections/overspeed") != 0) {
 			setprop("/it-fbw/protections/overspeed", 0);
diff --git a/gui/dialogs/a3xx-autoflight-dlg.xml b/gui/dialogs/a3xx-autoflight-dlg.xml
index 03be7fcf..94bdff6d 100644
--- a/gui/dialogs/a3xx-autoflight-dlg.xml
+++ b/gui/dialogs/a3xx-autoflight-dlg.xml
@@ -51,24 +51,28 @@
 			<legend>AP1</legend>
 			<pref-width>43</pref-width>
 			<binding>
-			<command>property-toggle</command>
-			<property>/it-autoflight/input/ap1</property>
-			</binding>
-			<binding>
-			<command>nasal</command>
-			<script>libraries.apOff("hard", 1);</script>
+				<command>nasal</command>
+				<script>
+					if (getprop("/it-autoflight/input/ap1") == 0) {
+						setprop("it-autoflight/input/ap1", 1);
+					} else {
+						libraries.apOff("hard", 1);
+					}
+				</script>
 			</binding>
 		</button>
 		<button>
 			<legend>AP2</legend>
 			<pref-width>43</pref-width>
 			<binding>
-			<command>property-toggle</command>
-			<property>/it-autoflight/input/ap2</property>
-			</binding>
-			<binding>
-			<command>nasal</command>
-			<script>libraries.apOff("hard", 2);</script>
+				<command>nasal</command>
+				<script>
+					if (getprop("/it-autoflight/input/ap2") == 0) {
+						setprop("it-autoflight/input/ap2", 1);
+					} else {
+						libraries.apOff("hard", 2);
+					}
+				</script>
 			</binding>
 		</button>
 		<button>