diff --git a/A320-main.xml b/A320-main.xml
index 0f17726f..056dc846 100644
--- a/A320-main.xml
+++ b/A320-main.xml
@@ -4698,7 +4698,7 @@
 			<file>Aircraft/A320-family/Nasal/ECAM/ECAM-phases.nas</file>
 		</ecam>
 		<fbw>
-			<file>Aircraft/A320-family/Nasal/FBW/it-fbw.nas</file>
+			<file>Aircraft/A320-family/Nasal/Systems/fbw.nas</file>
 		</fbw>
 		<fcu>
 			<file>Aircraft/A320-family/Nasal/FMGC/FCU.nas</file>
diff --git a/Nasal/FMGC/FMGC.nas b/Nasal/FMGC/FMGC.nas
index 83527ba4..7e627df5 100644
--- a/Nasal/FMGC/FMGC.nas
+++ b/Nasal/FMGC/FMGC.nas
@@ -115,7 +115,7 @@ var FMGCInternal = {
 	# speeds
 	alpha_prot: 0,
 	alpha_max: 0,
-	vmo_mmo: 0,
+	vmo_mmo: props.globals.getNode("/FMGC/internal/vmo-mmo"),
 	vsw: 0,
 	vls_min: 0,
 	clean: 0,
@@ -688,7 +688,7 @@ var masterFMGC = maketimer(0.2, func {
 	} elsif (pts.Gear.position[0].getValue() != 0 or pts.Gear.position[1].getValue() != 0 or pts.Gear.position[2].getValue() != 0) {
 		FMGCInternal.maxspeed = 284;
 	} else {
-		FMGCInternal.maxspeed = fmgc.FMGCInternal.vmo_mmo;
+		FMGCInternal.maxspeed = fmgc.FMGCInternal.vmo_mmo.getValue();
 	}
 	
 	if (newphase != FMGCInternal.phase) {  # phase changed
diff --git a/Nasal/FBW/it-fbw.nas b/Nasal/Systems/fbw.nas
similarity index 94%
rename from Nasal/FBW/it-fbw.nas
rename to Nasal/Systems/fbw.nas
index 53436637..adeed76e 100644
--- a/Nasal/FBW/it-fbw.nas
+++ b/Nasal/Systems/fbw.nas
@@ -87,7 +87,7 @@ var FBW = {
 		fac2: props.globals.getNode("/systems/fctl/lights/fac2-fault"),
 	},
 	Protections: {
-		overspeed: props.globals.getNode("/it-fbw/protections/overspeed"),
+		overspeed: props.globals.getNode("/fdm/jsbsim/fbw/protections/overspeed"),
 	},
 	Sidestick: {
 		active: [props.globals.getNode("/fdm/jsbsim/fbw/sidestick/active[0]"), props.globals.getNode("/fdm/jsbsim/fbw/sidestick/active[1]")],
@@ -240,26 +240,10 @@ var update_loop = func {
 		}
 	}
 	
-	
-	cas = pts.Instrumentation.AirspeedIndicator.indicatedSpdKt.getValue();
-	mmoIAS = (cas / pts.Instrumentation.AirspeedIndicator.indicatedMach.getValue()) * 0.82;
-	if (mmoIAS < 350) {
-		fmgc.FMGCInternal.vmo_mmo = mmoIAS;
-	} else {
-		fmgc.FMGCInternal.vmo_mmo = 350;
-	}
-	
-	if (cas > (fmgc.FMGCInternal.vmo_mmo + 6) and (law == 0 or law == 1)) {
+	if (FBW.Protections.overspeed.getBoolValue()) {
 		if (fmgc.Input.ap1.getBoolValue() or fmgc.Input.ap2.getBoolValue()) {
 			fcu.apOff("hard", 0);
 		}
-		if (!FBW.Protections.overspeed.getBoolValue()) {
-			FBW.Protections.overspeed.setBoolValue(1);
-		}
-	} else {
-		if (FBW.Protections.overspeed.getBoolValue()) {
-			FBW.Protections.overspeed.setBoolValue(0);
-		}
 	}
 }
 	
diff --git a/Systems/a320-aerodynamics.xml b/Systems/a320-aerodynamics.xml
index 842dc582..2d831705 100644
--- a/Systems/a320-aerodynamics.xml
+++ b/Systems/a320-aerodynamics.xml
@@ -596,7 +596,7 @@
 				<property>metrics/Sw-sqft</property>
 				<property>metrics/bw-ft</property>
 				<toradians><property>hydraulics/aileron-l/final-deg</property></toradians>
-				<value>0.035</value>
+				<value>0.043</value>
 			</product>
 		</function>
 		
@@ -607,7 +607,7 @@
 				<property>metrics/Sw-sqft</property>
 				<property>metrics/bw-ft</property>
 				<toradians><property>hydraulics/aileron-r/final-deg</property></toradians>
-				<value>-0.035</value>
+				<value>-0.043</value>
 			</product>
 		</function>
 		
@@ -618,7 +618,7 @@
 				<property>metrics/Sw-sqft</property>
 				<property>metrics/bw-ft</property>
 				<toradians><property>fcs/spoiler-left-deg</property></toradians>
-				<value>-0.023</value>
+				<value>-0.027</value>
 			</product>
 		</function>
 		
@@ -629,7 +629,7 @@
 				<property>metrics/Sw-sqft</property>
 				<property>metrics/bw-ft</property>
 				<toradians><property>fcs/spoiler-right-deg</property></toradians>
-				<value>0.023</value>
+				<value>0.027</value>
 			</product>
 		</function>
 		
diff --git a/Systems/a320-fbw.xml b/Systems/a320-fbw.xml
index e61482a6..35225b9e 100644
--- a/Systems/a320-fbw.xml
+++ b/Systems/a320-fbw.xml
@@ -14,6 +14,7 @@
 	<property value="1">fbw/mixer/sidestick-gain-feedback</property>
 	<property value="0">fbw/spoiler-output</property>
 	<property value="3.5">fbw/rate-c1</property>
+	<property value="0">fbw/pitch/ias-input</property>
 	
 	<!-- Default gains for tuning -->
 	<property value="0">fbw/roll/p-gain</property>
@@ -69,6 +70,18 @@
 			</test>
 		</switch>
 		
+		<switch name="fbw/protections/overspeed">
+			<default value="fbw/protections/overspeed"/>
+			<test logic="OR" value="0">
+				position/wow eq 1
+				/it-fbw/law ne 0
+				/instrumentation/airspeed-indicator/indicated-speed-kt le /FMGC/internal/vmo-mmo
+			</test>
+			<test value="1">
+				/instrumentation/airspeed-indicator/indicated-speed-kt ge /FMGC/internal/vmo-mmo-plus-6
+			</test>
+		</switch>
+		
 		<fcs_function name="fbw/roll/p-gain">
 			<function>
 				<table>
@@ -105,7 +118,7 @@
 					<tableData>
 						     0    1
 						140 -2.5  0.0
-						350 -0.5  0.0
+						350 -0.4  0.0
 					</tableData>
 				</table>
 			</function>
@@ -147,7 +160,7 @@
 					<tableData>
 						     0    1
 						140  2.0  0.0
-						350  0.4  0.0
+						350  0.3  0.0
 					</tableData>
 				</table>
 			</function>
@@ -215,19 +228,6 @@
 			</function>
 		</fcs_function>
 		
-		<pid name="fbw/pitch/vc-kts-rate">
-			<descripton>Use D only to calculate rate of IAS</descripton>
-			<input>velocities/vc-kts</input>
-			<kp>0.0</kp>
-			<ki>0.0</ki>
-			<kd>1.0</kd>
-		</pid>
-		
-		<lag_filter name="fbw/pitch/vc-kts-rate-lag">
-			<input>fbw/pitch/vc-kts-rate</input>
-			<c1>1.0</c1>
-		</lag_filter>
-		
 		<switch name="fbw/mixer/rate-limit">
 			<default value="fbw/mixer/rate-limit"/>
 			<test logic="AND" value="0.5"> <!-- 2 seconds -->
@@ -661,7 +661,7 @@
 		<switch name="fbw/roll/overspeed-overbank">
 			<default value="0"/>
 			<test value="0">
-				/it-fbw/protections/overspeed ne 1
+				fbw/protections/overspeed ne 1
 			</test>
 			<test logic="OR" value="1">
 				attitude/roll-rad lt -0.584685
@@ -673,7 +673,7 @@
 			<function>
 				<ifthen>
 					<eq>
-						<property>/it-fbw/protections/overspeed</property>
+						<property>fbw/protections/overspeed</property>
 						<value>1</value>
 					</eq>
 					<table>
@@ -714,9 +714,9 @@
 				<table>
 					<independentVar lookup="row">fbw/roll/max-rad-error</independentVar>
 					<tableData>
-						-0.174533  1.00
-						-0.043633  0.25
-						 0.000000  0.00
+						-0.087266  1.0
+						-0.034907  0.1
+						 0.000000  0.0
 					</tableData>
 				</table>
 			</function>
@@ -727,9 +727,9 @@
 				<table>
 					<independentVar lookup="row">fbw/roll/min-rad-error</independentVar>
 					<tableData>
-						0.000000  0.00
-						0.043633 -0.25
-						0.174533 -1.00
+						0.000000  0.0
+						0.034907 -0.1
+						0.087266 -1.0
 					</tableData>
 				</table>
 			</function>
@@ -758,8 +758,8 @@
 					<tableData>
 						          0     1
 						0.000000  0.00  0.00
-						0.043633 -0.25 -0.25
-						0.174533 -0.67 -1.00
+						0.034907 -0.10 -0.10
+						0.087266 -0.67 -1.00
 					</tableData>
 				</table>
 			</function>
@@ -772,8 +772,8 @@
 					<independentVar lookup="column">fbw/roll/overspeed-overbank</independentVar>
 					<tableData>
 						           0     1
-						-0.174533  0.67  1.00
-						-0.043633  0.25  0.25
+						-0.087266  0.67  1.00
+						-0.034907  0.10  0.10
 						 0.000000  0.00  0.00
 					</tableData>
 				</table>
@@ -926,7 +926,7 @@
 				<product>
 					<pow>
 						<abs><property>fbw/roll/s-i-f-i</property></abs>
-						<value>1.625</value>
+						<value>1.7</value>
 					</pow>
 					<ifthen>
 						<lt>
@@ -956,51 +956,93 @@
 			</test>
 		</switch>
 		
-		<switch name="fbw/roll/s-l">
+		<switch name="fbw/roll/s-l-2">
 			<default value="0"/>
-			<test value="fbw/roll/s-i">
-				/it-fbw/law ne 3
-				/systems/failures/aileron-left eq 0
+			<test logic="OR" value="0">
+				/it-fbw/law eq 3
 			</test>
-			<test value="fbw/aileron-output">
-				/it-fbw/law ne 3
+			<test logic="OR" value="fbw/roll/s-i">
+				/it-fbw/law eq 0
+				position/wow eq 1
 				/systems/failures/aileron-left eq 1
 			</test>
 		</switch>
 		
-		<switch name="fbw/roll/s-r">
+		<switch name="fbw/roll/s-l-3">
+			<default value="0"/>
+			<test logic="OR" value="0">
+				/it-fbw/law eq 3
+			</test>
+			<test logic="OR" value="fbw/roll/s-i">
+				/it-fbw/law eq 0
+				position/wow eq 1
+				/systems/failures/aileron-left eq 1
+				/systems/failures/spoilers/spoiler-l4 eq 1
+			</test>
+		</switch>
+		
+		<switch name="fbw/roll/s-l-4">
 			<default value="0"/>
 			<test value="fbw/roll/s-i">
 				/it-fbw/law ne 3
-				/systems/failures/aileron-right eq 0
 			</test>
-			<test value="fbw/aileron-output">
+		</switch>
+		
+		<switch name="fbw/roll/s-l-5">
+			<default value="0"/>
+			<test value="fbw/roll/s-i">
 				/it-fbw/law ne 3
+			</test>
+		</switch>
+		
+		<switch name="fbw/roll/s-r-2">
+			<default value="0"/>
+			<test logic="OR" value="0">
+				/it-fbw/law eq 3
+			</test>
+			<test logic="OR" value="fbw/roll/s-i">
+				/it-fbw/law eq 0
+				position/wow eq 1
 				/systems/failures/aileron-right eq 1
 			</test>
 		</switch>
+		
+		<switch name="fbw/roll/s-r-3">
+			<default value="0"/>
+			<test logic="OR" value="0">
+				/it-fbw/law eq 3
+			</test>
+			<test logic="OR" value="fbw/roll/s-i">
+				/it-fbw/law eq 0
+				position/wow eq 1
+				/systems/failures/aileron-right eq 1
+				/systems/failures/spoilers/spoiler-r4 eq 1
+			</test>
+		</switch>
+		
+		<switch name="fbw/roll/s-r-4">
+			<default value="0"/>
+			<test value="fbw/roll/s-i">
+				/it-fbw/law ne 3
+			</test>
+		</switch>
+		
+		<switch name="fbw/roll/s-r-5">
+			<default value="0"/>
+			<test value="fbw/roll/s-i">
+				/it-fbw/law ne 3
+			</test>
+		</switch>
 	
 	</channel>
 	
 	<channel name="FBW: Pitch">
 		
-		<switch name="fbw/pitch/elevator-max"> <!-- Prevent pitch down -->
-			<default value="1"/>
-			<test logic="AND" value="0">
-				/it-fbw/law eq 0
-				/it-fbw/protections/overspeed eq 1
-			</test>
-		</switch>
-		
 		<switch name="fbw/pitch/e-i-f">
 			<default value="fbw/sidestick/pitch-input"/>
 			<test value="0">
 				fbw/fmgc/enabled eq 1
 			</test>
-			<clipto>
-				<min>-1.0</min>
-				<max>fbw/pitch/elevator-max</max>
-			</clipto>
 		</switch>
 		
 		<actuator name="fbw/pitch/e-i-m">
@@ -1013,7 +1055,58 @@
 			<c1>20.0</c1>
 		</lag_filter>
 		
-		<fcs_function name="fbw/pitch/e-f-air">
+		<pid name="fbw/pitch/vc-kts-rate">
+			<descripton>Use D only to calculate rate of IAS</descripton>
+			<input>velocities/vc-kts</input>
+			<kp>0.0</kp>
+			<ki>0.0</ki>
+			<kd>1.0</kd>
+		</pid>
+		
+		<lag_filter name="fbw/pitch/vc-kts-rate-lag">
+			<input>fbw/pitch/vc-kts-rate</input>
+			<c1>10.0</c1>
+		</lag_filter>
+		
+		<summer name="fbw/pitch/vmo-mmo-error">
+			<input>fbw/pitch/ias-input</input>
+			<input>-/FMGC/internal/vmo-mmo</input>
+		</summer>
+		
+		<fcs_function name="fbw/pitch/e-i-overspeed">
+			<function>
+				<table>
+					<independentVar lookup="row">fbw/sidestick/pitch-input</independentVar>
+					<independentVar lookup="column">fbw/pitch/vc-kts-rate</independentVar>
+					<independentVar lookup="table">fbw/pitch/vmo-mmo-error</independentVar>
+					<tableData breakPoint="6"> <!-- Engage point, reduced forwards authority -->
+						   -1    1    3
+						-1 -1.0 -1.0 -1.0
+						 0  0.0 -0.5 -0.7
+						 1  0.3  0.3  0.3
+					</tableData>
+					<tableData breakPoint="16"> <!-- VMO + 16, no forwards authority allowed -->
+						   -2    0    2
+						-1 -1.0 -1.0 -1.0
+						 0  0.0 -0.5 -0.7
+						 1  0.0  0.0  0.0
+					</tableData>
+					<tableData breakPoint="31"> <!-- Full forward stabilizes just below VD -->
+						   -3   -1    0    2    4
+						-1 -1.0 -1.0 -1.0 -1.0 -1.0
+						 0  0.0 -0.5 -0.5 -1.0 -1.0
+						 1  0.0  0.0  0.0 -0.5 -1.0
+					</tableData>
+					<tableData breakPoint="36"> <!-- Get under VD at all costs -->
+						   -3    1
+						-1 -1.0 -1.0
+						 0  0.0 -1.0
+					</tableData>
+				</table>
+			</function>
+		</fcs_function>
+		
+		<fcs_function name="fbw/pitch/e-i-flare">
 			<function>
 				<sum>
 					<property>fbw/sidestick/pitch-input</property>
@@ -1065,9 +1158,9 @@
 				<table>
 					<independentVar lookup="row">fbw/pitch/min-rad-error</independentVar>
 					<tableData>
-						0.000000  0.00
-						0.021817  0.25
-						0.087266  1.00
+						0.000000  0.0
+						0.034907  0.1
+						0.087266  1.0
 					</tableData>
 				</table>
 			</function>
@@ -1078,9 +1171,9 @@
 				<table>
 					<independentVar lookup="row">fbw/pitch/max-rad-error</independentVar>
 					<tableData>
-						-0.087266 -1.00
-						-0.021817 -0.25
-						 0.000000  0.00
+						-0.087266 -1.0
+						-0.034907 -0.1
+						 0.000000  0.0
 					</tableData>
 				</table>
 			</function>
@@ -1088,7 +1181,11 @@
 		
 		<switch name="fbw/pitch/e-i-cmd">
 			<default value="fbw/sidestick/pitch-input"/>
-			<test logic="AND" value="fbw/pitch/e-f-air">
+			<test logic="AND" value="fbw/pitch/e-i-overspeed">
+				fbw/protections/overspeed eq 1
+				position/wow eq 0
+			</test>
+			<test logic="AND" value="fbw/pitch/e-i-flare">
 				fbw/fmgc/enabled eq 0
 				/position/gear-agl-ft le 30
 				/controls/flight/flaps-pos ge 4
@@ -1099,7 +1196,7 @@
 				fbw/detent-2-feedback le 2
 				fadec/eng-out ne 1
 			</test>
-			<test logic="AND" value="fbw/pitch/e-f-air">
+			<test logic="AND" value="fbw/pitch/e-i-flare">
 				fbw/fmgc/enabled eq 0
 				/position/gear-agl-ft le 30
 				/controls/flight/flaps-pos ge 4
@@ -1129,9 +1226,9 @@
 				<table>
 					<independentVar lookup="row">fbw/pitch/max-rad-error</independentVar>
 					<tableData>
-						0.000000  0.00
-						0.021817  0.25
-						0.087266  1.00
+						0.000000  0.0
+						0.034907  0.1
+						0.087266  1.0
 					</tableData>
 				</table>
 			</function>
@@ -1142,9 +1239,9 @@
 				<table>
 					<independentVar lookup="row">fbw/pitch/min-rad-error</independentVar>
 					<tableData>
-						-0.087266 -1.00
-						-0.021817 -0.25
-						 0.000000  0.00
+						-0.087266 -1.0
+						-0.034907 -0.1
+						 0.000000  0.0
 					</tableData>
 				</table>
 			</function>
@@ -1295,7 +1392,7 @@
 				attitude/roll-rad gt -0.628319
 				fbw/pitch/pid-switched ge 0.01
 				fbw/pitch/g-instrumented ge 0.5
-				/it-fbw/protections/overspeed ne 1
+				fbw/protections/overspeed ne 1
 				/controls/flight/elevator-trim le 0.32
 				position/wow eq 0
 			</test>
@@ -1306,7 +1403,7 @@
 				attitude/roll-rad gt -0.628319
 				fbw/pitch/pid-switched le -0.01
 				fbw/pitch/g-instrumented ge 0.5
-				/it-fbw/protections/overspeed ne 1
+				fbw/protections/overspeed ne 1
 				/controls/flight/elevator-trim ge -1.0
 				position/wow eq 0
 			</test>
diff --git a/Systems/a320-fmgc.xml b/Systems/a320-fmgc.xml
index 15ecbd1c..ce9124fe 100644
--- a/Systems/a320-fmgc.xml
+++ b/Systems/a320-fmgc.xml
@@ -1,12 +1,46 @@
 <?xml version="1.0"?>
 
 <!-- Airbus A320 FMGC -->
-<!-- Copyright (c) 2019 Jonathan Redpath -->
+<!-- Copyright (c) 2021 Josh Davidson and Jonathan Redpath -->
 
 <system name="A320: FMGC">
-
+	
+	<property value="350">/FMGC/internal/vmo-kts</property>
+	
 	<channel name="FMGC" execrate="8">
 		
+		<fcs_function name="/FMGC/internal/mmo-kts">
+			<function>
+				<product>
+					<quotient>
+						<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
+						<max> <!-- Prevent divide by 0 -->
+							<property>/instrumentation/airspeed-indicator/indicated-mach</property>
+							<value>0.0000001</value>
+						</max>
+					</quotient>
+					<value>0.82</value>
+				</product>
+			</function>
+		</fcs_function>
+		
+		<switch name="/FMGC/internal/vmo-mmo">
+			<default value="/FMGC/internal/vmo-kts"/>
+			<test logic="AND" value="/FMGC/internal/mmo-kts">
+				/FMGC/internal/mmo-kts lt /FMGC/internal/vmo-kts
+				position/wow eq 0
+			</test>
+		</switch>
+		
+		<fcs_function name="/FMGC/internal/vmo-mmo-plus-6">
+			<function>
+				<sum>
+					<property>/FMGC/internal/vmo-mmo</property>
+					<value>6</value>
+				</sum>
+			</function>
+		</fcs_function>
+		
 		<fcs_function name="/systems/fmgc/cas-compare/cas-1-to-3">
 			<function>
 				<abs>
diff --git a/Systems/a320-spoiler.xml b/Systems/a320-spoiler.xml
index 7658d70b..4c787c78 100644
--- a/Systems/a320-spoiler.xml
+++ b/Systems/a320-spoiler.xml
@@ -188,7 +188,7 @@
 						<value>0.5</value>
 					</product>
 					<table>
-						<independentVar lookup="row">fbw/roll/s-l</independentVar>
+						<independentVar lookup="row">fbw/roll/s-l-2</independentVar>
 						<tableData>
 							0.0  0.0
 							1.0 -0.55
@@ -203,7 +203,7 @@
 				<sum>
 					<property>spoilers/main-cmd</property>
 					<table>
-						<independentVar lookup="row">fbw/roll/s-l</independentVar>
+						<independentVar lookup="row">fbw/roll/s-l-2</independentVar>
 						<tableData>
 							0.0  0.0
 							1.0 -0.7
@@ -216,7 +216,7 @@
 		<fcs_function name="hydraulics/spoiler-l2/retracted">
 			<function>
 				<table>
-					<independentVar lookup="row">fbw/roll/s-l</independentVar>
+					<independentVar lookup="row">fbw/roll/s-l-2</independentVar>
 					<tableData>
 						-1.0  0.7
 						 0.0  0.0
@@ -281,7 +281,7 @@
 				<sum>
 					<property>spoilers/main-cmd</property>
 					<table>
-						<independentVar lookup="row">fbw/roll/s-l</independentVar>
+						<independentVar lookup="row">fbw/roll/s-l-3</independentVar>
 						<tableData>
 							0.0  0.0
 							1.0 -0.7
@@ -299,7 +299,7 @@
 						<value>0.8</value>
 					</product>
 					<table>
-						<independentVar lookup="row">fbw/roll/s-l</independentVar>
+						<independentVar lookup="row">fbw/roll/s-l-3</independentVar>
 						<tableData>
 							0.0  0.0
 							1.0 -0.7
@@ -312,7 +312,7 @@
 		<fcs_function name="hydraulics/spoiler-l3/retracted">
 			<function>
 				<table>
-					<independentVar lookup="row">fbw/roll/s-l</independentVar>
+					<independentVar lookup="row">fbw/roll/s-l-3</independentVar>
 					<tableData>
 						-1.0  0.7
 						 0.0  0.0
@@ -377,7 +377,7 @@
 				<sum>
 					<property>spoilers/main-cmd</property>
 					<table>
-						<independentVar lookup="row">fbw/roll/s-l</independentVar>
+						<independentVar lookup="row">fbw/roll/s-l-4</independentVar>
 						<tableData>
 							0.0  0.0
 							1.0 -0.7
@@ -395,7 +395,7 @@
 						<value>0.8</value>
 					</product>
 					<table>
-						<independentVar lookup="row">fbw/roll/s-l</independentVar>
+						<independentVar lookup="row">fbw/roll/s-l-4</independentVar>
 						<tableData>
 							0.0  0.0
 							1.0 -0.7
@@ -408,7 +408,7 @@
 		<fcs_function name="hydraulics/spoiler-l4/retracted">
 			<function>
 				<table>
-					<independentVar lookup="row">fbw/roll/s-l</independentVar>
+					<independentVar lookup="row">fbw/roll/s-l-4</independentVar>
 					<tableData>
 						-1.0  0.7
 						 0.0  0.0
@@ -473,7 +473,7 @@
 				<sum>
 					<property>spoilers/main-cmd</property>
 					<table>
-						<independentVar lookup="row">fbw/roll/s-l</independentVar>
+						<independentVar lookup="row">fbw/roll/s-l-5</independentVar>
 						<tableData>
 							0.0  0.0
 							1.0 -0.7
@@ -486,7 +486,7 @@
 		<fcs_function name="hydraulics/spoiler-l5/retracted">
 			<function>
 				<table>
-					<independentVar lookup="row">fbw/roll/s-l</independentVar>
+					<independentVar lookup="row">fbw/roll/s-l-5</independentVar>
 					<tableData>
 						-1.0  0.7
 						 0.0  0.0
@@ -609,7 +609,7 @@
 						<value>0.5</value>
 					</product>
 					<table>
-						<independentVar lookup="row">fbw/roll/s-l</independentVar>
+						<independentVar lookup="row">fbw/roll/s-r-2</independentVar>
 						<tableData>
 							-1.0 -0.55
 							 0.0  0.0
@@ -624,7 +624,7 @@
 				<sum>
 					<property>spoilers/main-cmd</property>
 					<table>
-						<independentVar lookup="row">fbw/roll/s-l</independentVar>
+						<independentVar lookup="row">fbw/roll/s-r-2</independentVar>
 						<tableData>
 							-1.0 -0.7
 							 0.0  0.0
@@ -637,7 +637,7 @@
 		<fcs_function name="hydraulics/spoiler-r2/retracted">
 			<function>
 				<table>
-					<independentVar lookup="row">fbw/roll/s-l</independentVar>
+					<independentVar lookup="row">fbw/roll/s-r-2</independentVar>
 					<tableData>
 						0.0  0.0
 						1.0  0.7
@@ -702,7 +702,7 @@
 				<sum>
 					<property>spoilers/main-cmd</property>
 					<table>
-						<independentVar lookup="row">fbw/roll/s-l</independentVar>
+						<independentVar lookup="row">fbw/roll/s-r-3</independentVar>
 						<tableData>
 							0.0  0.0
 							1.0 -0.7
@@ -720,7 +720,7 @@
 						<value>0.8</value>
 					</product>
 					<table>
-						<independentVar lookup="row">fbw/roll/s-l</independentVar>
+						<independentVar lookup="row">fbw/roll/s-r-3</independentVar>
 						<tableData>
 							0.0  0.0
 							1.0 -0.7
@@ -733,7 +733,7 @@
 		<fcs_function name="hydraulics/spoiler-r3/retracted">
 			<function>
 				<table>
-					<independentVar lookup="row">fbw/roll/s-l</independentVar>
+					<independentVar lookup="row">fbw/roll/s-r-3</independentVar>
 					<tableData>
 						 0.0  0.0
 						 1.0  0.7
@@ -798,7 +798,7 @@
 				<sum>
 					<property>spoilers/main-cmd</property>
 					<table>
-						<independentVar lookup="row">fbw/roll/s-l</independentVar>
+						<independentVar lookup="row">fbw/roll/s-r-4</independentVar>
 						<tableData>
 							0.0  0.0
 							1.0 -0.7
@@ -816,7 +816,7 @@
 						<value>0.8</value>
 					</product>
 					<table>
-						<independentVar lookup="row">fbw/roll/s-l</independentVar>
+						<independentVar lookup="row">fbw/roll/s-r-4</independentVar>
 						<tableData>
 							0.0  0.0
 							1.0 -0.7
@@ -829,7 +829,7 @@
 		<fcs_function name="hydraulics/spoiler-r4/retracted">
 			<function>
 				<table>
-					<independentVar lookup="row">fbw/roll/s-l</independentVar>
+					<independentVar lookup="row">fbw/roll/s-r-4</independentVar>
 					<tableData>
 						 0.0  0.0
 						 1.0  0.7
@@ -894,7 +894,7 @@
 				<sum>
 					<property>spoilers/main-cmd</property>
 					<table>
-						<independentVar lookup="row">fbw/roll/s-l</independentVar>
+						<independentVar lookup="row">fbw/roll/s-r-5</independentVar>
 						<tableData>
 							-1.0 -0.7
 							 0.0  0.0
@@ -907,7 +907,7 @@
 		<fcs_function name="hydraulics/spoiler-r5/retracted">
 			<function>
 				<table>
-					<independentVar lookup="row">fbw/roll/s-l</independentVar>
+					<independentVar lookup="row">fbw/roll/s-r-5</independentVar>
 					<tableData>
 						0.0  0.0
 						1.0  0.7
diff --git a/Systems/fbw-pitch.xml b/Systems/fbw-pitch.xml
deleted file mode 100644
index 6f7dca58..00000000
--- a/Systems/fbw-pitch.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0"?>
-
-<!-- Copyright (c) 2021 Josh Davidson (Octal450) -->
-
-<!-- Airbus A3XX FBW System -->
-<!-- I didn't see an easy way to do this controller in JSBsim, so I keep it here -->
-
-<PropertyList>
-
-	<pi-simple-controller>
-		<name>FBW PITCH G PI</name>
-		<debug>false</debug>
-		<input>/fdm/jsbsim/fbw/pitch/g-error</input>
-		<reference>0</reference>
-		<output>/fdm/jsbsim/fbw/pitch/g-pi</output>
-		<config>
-			<Kp>
-				<expression>
-					<table>
-						<property>/fdm/jsbsim/velocities/vc-kts</property>
-						<entry><ind>140</ind><dep>-1.0</dep></entry>
-						<entry><ind>350</ind><dep>-0.5</dep></entry>
-					</table>
-				</expression>
-			</Kp>
-			<Ki>
-				<condition>
-					<and>
-						<equals>
-							<property>/fdm/jsbsim/position/wow</property>
-							<value>0</value>
-						</equals>
-						<or>
-							<equals>
-								<property>/it-fbw/law</property>
-								<value>0</value>
-							</equals>
-							<equals>
-								<property>/it-fbw/law</property>
-								<value>1</value>
-							</equals>
-						</or>
-					</and>
-				</condition>
-				<expression>
-					<table>
-						<property>/fdm/jsbsim/velocities/vc-kts</property>
-						<entry><ind>140</ind><dep>-1.0</dep></entry>
-						<entry><ind>350</ind><dep>-0.5</dep></entry>
-					</table>
-				</expression>
-			</Ki>
-			<Ki>0.0</Ki>
-			<min>
-				<condition>
-					<less-than>
-						<property>/fdm/jsbsim/fbw/pitch/e-i</property>
-						<value>0</value>
-					</less-than>
-				</condition>
-				<property>/fdm/jsbsim/fbw/pitch/e-i</property>
-			</min>
-			<min>0.0</min>
-			<max>
-				<condition>
-					<greater-than>
-						<property>/fdm/jsbsim/fbw/pitch/e-i</property>
-						<value>0</value>
-					</greater-than>
-				</condition>
-				<property>/fdm/jsbsim/fbw/pitch/e-i</property>
-			</max>
-			<max>0.0</max>
-		</config>
-	</pi-simple-controller>
-
-</PropertyList>
diff --git a/Systems/libraries.xml b/Systems/libraries.xml
index a8888794..518b49c5 100644
--- a/Systems/libraries.xml
+++ b/Systems/libraries.xml
@@ -1727,5 +1727,14 @@
 		</input>
 		<output>/instrumentation/dcdu/lcd-contrast</output>
 	</filter>
+	
+	<predict-simple>
+		<name>FBW Pitch IAS Predictor</name>
+		<debug>false</debug>
+		<input>/instrumentation/airspeed-indicator/indicated-speed-kt</input>
+		<output>/fdm/jsbsim/fbw/pitch/ias-input</output>
+		<seconds>1.0</seconds>
+		<filter-gain>0</filter-gain>
+	</predict-simple>
 
 </PropertyList>