diff --git a/AircraftConfig/about.xml b/AircraftConfig/about.xml
index ed5952b0..d797a6d3 100644
--- a/AircraftConfig/about.xml
+++ b/AircraftConfig/about.xml
@@ -61,7 +61,7 @@
 		</text>
 		<text>
 			<halign>left</halign>
-			<label>Pre V1.0, Shared Libraries 1.5.0</label>
+			<label>Pre V1.0, Shared Libraries 1.5.1</label>
 		</text>
 	
 	</group>
diff --git a/AircraftConfig/acconfig.nas b/AircraftConfig/acconfig.nas
index a8ca0464..d0d45c04 100644
--- a/AircraftConfig/acconfig.nas
+++ b/AircraftConfig/acconfig.nas
@@ -88,6 +88,7 @@ setprop("/systems/acconfig/options/keyboard-mode", 0);
 setprop("/systems/acconfig/options/laptop-mode", 0);
 setprop("/systems/acconfig/options/adirs-skip", 0);
 setprop("/systems/acconfig/options/welcome-skip", 0);
+setprop("/systems/acconfig/options/no-rendering-warn", 0);
 setprop("/systems/acconfig/options/pfd-rate", 1);
 setprop("/systems/acconfig/options/nd-rate", 1);
 setprop("/systems/acconfig/options/uecam-rate", 1);
@@ -108,6 +109,7 @@ var error_mismatch = gui.Dialog.new("sim/gui/dialogs/acconfig/error/mismatch/dia
 var groundservices_dlg = gui.Dialog.new("sim/gui/dialogs/acconfig/groundsrvc/dialog", "Aircraft/IDG-A32X/AircraftConfig/groundservices.xml");
 var du_quality = gui.Dialog.new("sim/gui/dialogs/acconfig/du-quality/dialog", "Aircraft/IDG-A32X/AircraftConfig/du-quality.xml");
 var autopush_dlg = gui.Dialog.new("sim/gui/dialogs/autopush/dialog", "Aircraft/IDG-A32X/AircraftConfig/autopush.xml");
+var rendering_dlg = gui.Dialog.new("sim/gui/dialogs/rendering/dialog", "Aircraft/IDG-A32X/AircraftConfig/rendering.xml");
 spinning.start();
 init_dlg.open();
 
@@ -132,6 +134,7 @@ var mismatch_chk = func {
 		if (getprop("/systems/acconfig/out-of-date") != 1) {
 			error_mismatch.open();
 		}
+		libraries.systemsLoop.stop();
 		print("Mismatch: 0x121");
 		welcome_dlg.close();
 	} else if (getprop("/gear/gear[0]/wow") == 0 or getprop("/position/altitude-ft") >= 15000) {
@@ -140,6 +143,7 @@ var mismatch_chk = func {
 		if (getprop("/systems/acconfig/out-of-date") != 1) {
 			error_mismatch.open();
 		}
+		libraries.systemsLoop.stop();
 		print("Mismatch: 0x223");
 		welcome_dlg.close();
 	} else if (getprop("/systems/acconfig/libraries-loaded") != 1) {
@@ -148,6 +152,7 @@ var mismatch_chk = func {
 		if (getprop("/systems/acconfig/out-of-date") != 1) {
 			error_mismatch.open();
 		}
+		libraries.systemsLoop.stop();
 		print("Mismatch: 0x247");
 		welcome_dlg.close();
 	}
@@ -163,14 +168,49 @@ setlistener("/sim/signals/fdm-initialized", func {
 	readSettings();
 	if (getprop("/systems/acconfig/out-of-date") != 1 and getprop("/systems/acconfig/options/revision") < current_revision and getprop("/systems/acconfig/mismatch-code") == "0x000") {
 		updated_dlg.open();
+		if (getprop("/systems/acconfig/options/no-rendering-warn") != 1) {
+			renderingSettings.check();
+		}
 	} else if (getprop("/systems/acconfig/out-of-date") != 1 and getprop("/systems/acconfig/mismatch-code") == "0x000" and getprop("/systems/acconfig/options/welcome-skip") != 1) {
 		welcome_dlg.open();
+		if (getprop("/systems/acconfig/options/no-rendering-warn") != 1) {
+			renderingSettings.check();
+		}
 	}
 	setprop("/systems/acconfig/options/revision", current_revision);
 	writeSettings();
 	spinning.stop();
 });
 
+var renderingSettings = {
+	check: func() {
+		var rembrandt = getprop("/sim/rendering/rembrandt/enabled");
+		var ALS = getprop("/sim/rendering/shaders/skydome");
+		var customSettings = getprop("/sim/rendering/shaders/custom-settings") == 1;
+		var landmass = getprop("/sim/rendering/shaders/landmass") >= 4;
+		var model = getprop("/sim/rendering/shaders/model") >= 1;
+		if (!rembrandt and (!ALS or !customSettings or !landmass or !model)) {
+			rendering_dlg.open();
+		}
+	},
+	fixAll: func() {
+		me.fixCore();
+		var landmass = getprop("/sim/rendering/shaders/landmass") >= 4;
+		var model = getprop("/sim/rendering/shaders/model") >= 1;
+		if (!landmass) {
+			setprop("/sim/rendering/shaders/landmass", 4);
+		}
+		if (!model) {
+			setprop("/sim/rendering/shaders/model", 1);
+		}
+	},
+	fixCore: func() {
+		setprop("/sim/rendering/shaders/skydome", 1); # ALS on
+		setprop("/sim/rendering/shaders/custom-settings", 1);
+		gui.popupTip("Rendering Settings updated!");
+	},
+};
+
 var readSettings = func {
 	io.read_properties(getprop("/sim/fg-home") ~ "/Export/IDG-A32X-config.xml", "/systems/acconfig/options");
 	setprop("/options/system/keyboard-mode", getprop("/systems/acconfig/options/keyboard-mode"));
@@ -191,36 +231,38 @@ var writeSettings = func {
 
 # Cold and Dark
 var colddark = func {
-	spinning.start();
-	ps_load_dlg.open();
-	setprop("/systems/acconfig/autoconfig-running", 1);
-	setprop("/controls/gear/brake-left", 1);
-	setprop("/controls/gear/brake-right", 1);
-	# Initial shutdown, and reinitialization.
-	setprop("/controls/engines/engine-start-switch", 1);
-	setprop("/controls/engines/engine[0]/cutoff-switch", 1);
-	setprop("/controls/engines/engine[1]/cutoff-switch", 1);
-	setprop("/controls/flight/slats", 0.000);
-	setprop("/controls/flight/flaps", 0.000);
-	setprop("/controls/flight/flap-lever", 0);
-	setprop("/controls/flight/flap-pos", 0);
-	setprop("/controls/flight/flap-txt", " ");
-	libraries.flaptimer.stop();
-	setprop("/controls/flight/speedbrake-arm", 0);
-	setprop("/controls/flight/speedbrake", 0);
-	setprop("/controls/gear/gear-down", 1);
-	setprop("/controls/flight/elevator-trim", 0);
-	libraries.systemsInit();
-	failReset();
-	if (getprop("/engines/engine[1]/n2-actual") < 2) {
-		colddark_b();
-	} else {
-		var colddark_eng_off = setlistener("/engines/engine[1]/n2-actual", func {
-			if (getprop("/engines/engine[1]/n2-actual") < 2) {
-				removelistener(colddark_eng_off);
-				colddark_b();
-			}
-		});
+	if (getprop("/systems/acconfig/mismatch-code") == "0x000") {
+		spinning.start();
+		ps_load_dlg.open();
+		setprop("/systems/acconfig/autoconfig-running", 1);
+		setprop("/controls/gear/brake-left", 1);
+		setprop("/controls/gear/brake-right", 1);
+		# Initial shutdown, and reinitialization.
+		setprop("/controls/engines/engine-start-switch", 1);
+		setprop("/controls/engines/engine[0]/cutoff-switch", 1);
+		setprop("/controls/engines/engine[1]/cutoff-switch", 1);
+		setprop("/controls/flight/slats", 0.000);
+		setprop("/controls/flight/flaps", 0.000);
+		setprop("/controls/flight/flap-lever", 0);
+		setprop("/controls/flight/flap-pos", 0);
+		setprop("/controls/flight/flap-txt", " ");
+		libraries.flaptimer.stop();
+		setprop("/controls/flight/speedbrake-arm", 0);
+		setprop("/controls/flight/speedbrake", 0);
+		setprop("/controls/gear/gear-down", 1);
+		setprop("/controls/flight/elevator-trim", 0);
+		libraries.systemsInit();
+		failReset();
+		if (getprop("/engines/engine[1]/n2-actual") < 2) {
+			colddark_b();
+		} else {
+			var colddark_eng_off = setlistener("/engines/engine[1]/n2-actual", func {
+				if (getprop("/engines/engine[1]/n2-actual") < 2) {
+					removelistener(colddark_eng_off);
+					colddark_b();
+				}
+			});
+		}
 	}
 }
 var colddark_b = func {
@@ -237,41 +279,43 @@ var colddark_b = func {
 
 # Ready to Start Eng
 var beforestart = func {
-	spinning.start();
-	ps_load_dlg.open();
-	setprop("/systems/acconfig/autoconfig-running", 1);
-	setprop("/controls/gear/brake-left", 1);
-	setprop("/controls/gear/brake-right", 1);
-	# First, we set everything to cold and dark.
-	setprop("/controls/engines/engine-start-switch", 1);
-	setprop("/controls/engines/engine[0]/cutoff-switch", 1);
-	setprop("/controls/engines/engine[1]/cutoff-switch", 1);
-	setprop("/controls/flight/slats", 0.000);
-	setprop("/controls/flight/flaps", 0.000);
-	setprop("/controls/flight/flap-lever", 0);
-	setprop("/controls/flight/flap-pos", 0);
-	setprop("/controls/flight/flap-txt", " ");
-	libraries.flaptimer.stop();
-	setprop("/controls/flight/speedbrake-arm", 0);
-	setprop("/controls/flight/speedbrake", 0);
-	setprop("/controls/gear/gear-down", 1);
-	setprop("/controls/flight/elevator-trim", 0);
-	libraries.systemsInit();
-	failReset();
-	setprop("/controls/APU/master", 0);
-	setprop("/controls/APU/start", 0);
-	
-	# Now the Startup!
-	setprop("/controls/electrical/switches/battery1", 1);
-	setprop("/controls/electrical/switches/battery2", 1);
-	setprop("/controls/APU/master", 1);
-	setprop("/controls/APU/start", 1);
-	var apu_rpm_chk = setlistener("/systems/apu/rpm", func {
-		if (getprop("/systems/apu/rpm") >= 98) {
-			removelistener(apu_rpm_chk);
-			beforestart_b();
-		}
-	});
+	if (getprop("/systems/acconfig/mismatch-code") == "0x000") {
+		spinning.start();
+		ps_load_dlg.open();
+		setprop("/systems/acconfig/autoconfig-running", 1);
+		setprop("/controls/gear/brake-left", 1);
+		setprop("/controls/gear/brake-right", 1);
+		# First, we set everything to cold and dark.
+		setprop("/controls/engines/engine-start-switch", 1);
+		setprop("/controls/engines/engine[0]/cutoff-switch", 1);
+		setprop("/controls/engines/engine[1]/cutoff-switch", 1);
+		setprop("/controls/flight/slats", 0.000);
+		setprop("/controls/flight/flaps", 0.000);
+		setprop("/controls/flight/flap-lever", 0);
+		setprop("/controls/flight/flap-pos", 0);
+		setprop("/controls/flight/flap-txt", " ");
+		libraries.flaptimer.stop();
+		setprop("/controls/flight/speedbrake-arm", 0);
+		setprop("/controls/flight/speedbrake", 0);
+		setprop("/controls/gear/gear-down", 1);
+		setprop("/controls/flight/elevator-trim", 0);
+		libraries.systemsInit();
+		failReset();
+		setprop("/controls/APU/master", 0);
+		setprop("/controls/APU/start", 0);
+		
+		# Now the Startup!
+		setprop("/controls/electrical/switches/battery1", 1);
+		setprop("/controls/electrical/switches/battery2", 1);
+		setprop("/controls/APU/master", 1);
+		setprop("/controls/APU/start", 1);
+		var apu_rpm_chk = setlistener("/systems/apu/rpm", func {
+			if (getprop("/systems/apu/rpm") >= 98) {
+				removelistener(apu_rpm_chk);
+				beforestart_b();
+			}
+		});
+	}
 }
 var beforestart_b = func {
 	# Continue with engine start prep.
@@ -312,41 +356,43 @@ var beforestart_b = func {
 
 # Ready to Taxi
 var taxi = func {
-	spinning.start();
-	ps_load_dlg.open();
-	setprop("/systems/acconfig/autoconfig-running", 1);
-	setprop("/controls/gear/brake-left", 1);
-	setprop("/controls/gear/brake-right", 1);
-	# First, we set everything to cold and dark.
-	setprop("/controls/engines/engine-start-switch", 1);
-	setprop("/controls/engines/engine[0]/cutoff-switch", 1);
-	setprop("/controls/engines/engine[1]/cutoff-switch", 1);
-	setprop("/controls/flight/slats", 0.000);
-	setprop("/controls/flight/flaps", 0.000);
-	setprop("/controls/flight/flap-lever", 0);
-	setprop("/controls/flight/flap-pos", 0);
-	setprop("/controls/flight/flap-txt", " ");
-	libraries.flaptimer.stop();
-	setprop("/controls/flight/speedbrake-arm", 0);
-	setprop("/controls/flight/speedbrake", 0);
-	setprop("/controls/gear/gear-down", 1);
-	setprop("/controls/flight/elevator-trim", 0);
-	libraries.systemsInit();
-	failReset();
-	setprop("/controls/APU/master", 0);
-	setprop("/controls/APU/start", 0);
-	
-	# Now the Startup!
-	setprop("/controls/electrical/switches/battery1", 1);
-	setprop("/controls/electrical/switches/battery2", 1);
-	setprop("/controls/APU/master", 1);
-	setprop("/controls/APU/start", 1);
-	var apu_rpm_chk = setlistener("/systems/apu/rpm", func {
-		if (getprop("/systems/apu/rpm") >= 98) {
-			removelistener(apu_rpm_chk);
-			taxi_b();
-		}
-	});
+	if (getprop("/systems/acconfig/mismatch-code") == "0x000") {
+		spinning.start();
+		ps_load_dlg.open();
+		setprop("/systems/acconfig/autoconfig-running", 1);
+		setprop("/controls/gear/brake-left", 1);
+		setprop("/controls/gear/brake-right", 1);
+		# First, we set everything to cold and dark.
+		setprop("/controls/engines/engine-start-switch", 1);
+		setprop("/controls/engines/engine[0]/cutoff-switch", 1);
+		setprop("/controls/engines/engine[1]/cutoff-switch", 1);
+		setprop("/controls/flight/slats", 0.000);
+		setprop("/controls/flight/flaps", 0.000);
+		setprop("/controls/flight/flap-lever", 0);
+		setprop("/controls/flight/flap-pos", 0);
+		setprop("/controls/flight/flap-txt", " ");
+		libraries.flaptimer.stop();
+		setprop("/controls/flight/speedbrake-arm", 0);
+		setprop("/controls/flight/speedbrake", 0);
+		setprop("/controls/gear/gear-down", 1);
+		setprop("/controls/flight/elevator-trim", 0);
+		libraries.systemsInit();
+		failReset();
+		setprop("/controls/APU/master", 0);
+		setprop("/controls/APU/start", 0);
+		
+		# Now the Startup!
+		setprop("/controls/electrical/switches/battery1", 1);
+		setprop("/controls/electrical/switches/battery2", 1);
+		setprop("/controls/APU/master", 1);
+		setprop("/controls/APU/start", 1);
+		var apu_rpm_chk = setlistener("/systems/apu/rpm", func {
+			if (getprop("/systems/apu/rpm") >= 98) {
+				removelistener(apu_rpm_chk);
+				taxi_b();
+			}
+		});
+	}
 }
 var taxi_b = func {
 	# Continue with engine start prep, and start engines.
@@ -404,24 +450,26 @@ var taxi_d = func {
 
 # Ready to Takeoff
 var takeoff = func {
-	# The same as taxi, except we set some things afterwards.
-	taxi();
-	var eng_one_chk_c = setlistener("/engines/engine[0]/state", func {
-		if (getprop("/engines/engine[0]/state") == 3) {
-			removelistener(eng_one_chk_c);
-			setprop("/controls/lighting/strobe", 1);
-			setprop("/controls/lighting/landing-lights[1]", 1);
-			setprop("/controls/lighting/landing-lights[2]", 1);
-			setprop("/controls/flight/speedbrake-arm", 1);
-			setprop("/controls/flight/flaps", 0.290);
-			setprop("/controls/flight/slats", 0.666);
-			setprop("/controls/flight/flap-lever", 1);
-			setprop("/controls/flight/flap-pos", 2);
-			setprop("/controls/flight/flap-txt", "1+F");
-			libraries.flaptimer.start();
-			setprop("/controls/flight/elevator-trim", -0.07);
-			systems.arm_autobrake(3);
-			libraries.ECAM.toConfig();
-		}
-	});
+	if (getprop("/systems/acconfig/mismatch-code") == "0x000") {
+		# The same as taxi, except we set some things afterwards.
+		taxi();
+		var eng_one_chk_c = setlistener("/engines/engine[0]/state", func {
+			if (getprop("/engines/engine[0]/state") == 3) {
+				removelistener(eng_one_chk_c);
+				setprop("/controls/lighting/strobe", 1);
+				setprop("/controls/lighting/landing-lights[1]", 1);
+				setprop("/controls/lighting/landing-lights[2]", 1);
+				setprop("/controls/flight/speedbrake-arm", 1);
+				setprop("/controls/flight/flaps", 0.290);
+				setprop("/controls/flight/slats", 0.666);
+				setprop("/controls/flight/flap-lever", 1);
+				setprop("/controls/flight/flap-pos", 2);
+				setprop("/controls/flight/flap-txt", "1+F");
+				libraries.flaptimer.start();
+				setprop("/controls/flight/elevator-trim", -0.07);
+				systems.arm_autobrake(3);
+				libraries.ECAM.toConfig();
+			}
+		});
+	}
 }
diff --git a/AircraftConfig/main.xml b/AircraftConfig/main.xml
index 75079a04..035357a0 100644
--- a/AircraftConfig/main.xml
+++ b/AircraftConfig/main.xml
@@ -13,7 +13,7 @@
 		<layout>hbox</layout>
 		<text>
 			<halign>left</halign>
-			<label>Aircraft Configuration V1.5.0</label>
+			<label>Aircraft Configuration V1.5.1</label>
 		</text>
 		<empty><stretch>1</stretch></empty>
 		<button>
diff --git a/AircraftConfig/rendering.xml b/AircraftConfig/rendering.xml
new file mode 100644
index 00000000..b9c88c51
--- /dev/null
+++ b/AircraftConfig/rendering.xml
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!-- Copyright (c) 2018 Joshua Davidson (it0uchpods) -->
+
+<!-- A3XX Aircraft Config Dialog -->
+
+<PropertyList>
+
+	<name>aircraft-config-rendering</name>
+	<layout>vbox</layout>
+	
+	<group>
+		<layout>hbox</layout>
+		<text>
+			<halign>left</halign>
+			<label>Rendering Settings</label>
+		</text>
+		<button>
+			<halign>right</halign>
+			<pref-width>20</pref-width>
+			<pref-height>20</pref-height>
+			<legend>X</legend>
+			<key>Esc</key>
+			<binding>
+				<command>dialog-close</command>
+			</binding>
+		</button>
+	</group>
+	
+	<hrule/>
+	
+	<group>
+		<layout>vbox</layout>
+		
+		<text>
+			<halign>left</halign>
+			<label>IDG Aircraft Config has detected that rendering settings are not set properly!</label>
+		</text>
+		
+		<text>
+			<halign>left</halign>
+			<label>This means lighting effects on the exterior and in the virtual cockpit will not be visible.</label>
+		</text>
+		
+		<text>
+			<halign>left</halign>
+			<label>ALS, and custom shader settings must be on.</label>
+		</text>
+		
+		<text>
+			<halign>left</halign>
+			<label>Landmass shader must be at least 4 for lightspots to work.</label>
+		</text>
+		
+		<text>
+			<halign>left</halign>
+			<label>Model shader must be at least 1 for lightmaps to work.</label>
+		</text>
+		
+		<hrule/>
+		
+		<text>
+			<halign>left</halign>
+			<label>Would you like IDG Aircraft Config to automatically turn on ALS and fix shader settings?</label>
+		</text>
+		
+		<text>
+			<halign>left</halign>
+			<label>If the settings do not save after fixing, try quitting FlightGear through File -&gt; Exit after fixing.</label>
+		</text>
+	
+	</group>
+	
+	<hrule/>
+	
+	<group>
+		<layout>hbox</layout>
+	
+		<checkbox>
+			<label>Do not warn me about rendering settings again</label>
+			<halign>center</halign>
+			<property>/systems/acconfig/options/no-rendering-warn</property>
+			<binding>
+				<command>property-toggle</command>
+				<property>/systems/acconfig/options/no-rendering-warn</property>
+			</binding>
+			<binding>
+				<command>dialog-apply</command>
+			</binding>
+			<binding>
+				<command>nasal</command>
+				<script>
+				acconfig.writeSettings();
+				</script>
+			</binding>
+			<live>true</live>
+		</checkbox>
+		
+	</group>
+	
+	<hrule/>
+	
+	<group>
+		<layout>hbox</layout>
+		
+		<button>
+			<halign>center</halign>
+			<legend>Yes, fix all settings</legend>
+			<pref-width>180</pref-width>
+			<binding>
+				<command>nasal</command>
+				<script>
+				acconfig.renderingSettings.fixAll();
+				</script>
+			</binding>
+			<binding>
+				<command>dialog-close</command>
+			</binding>
+		</button>
+		
+		<button>
+			<halign>center</halign>
+			<legend>Yes, but I'll fix shaders myself</legend>
+			<pref-width>180</pref-width>
+			<binding>
+				<command>nasal</command>
+				<script>
+				acconfig.renderingSettings.fixCore();
+				</script>
+			</binding>
+			<binding> <!-- Close the non-ALS shader dialog if it is open for some bizarre reason -->
+				<command>dialog-close</command>
+				<dialog-name>shaders</dialog-name>
+			</binding>
+			<binding>
+				<command>dialog-show</command>
+				<dialog-name>shaders-lightfield</dialog-name>
+			</binding>
+			<binding>
+				<command>dialog-close</command>
+			</binding>
+		</button>
+		
+		<button>
+			<halign>center</halign>
+			<legend>I don't care</legend>
+			<pref-width>180</pref-width>
+			<binding>
+				<command>dialog-close</command>
+			</binding>
+		</button>
+	
+	</group>
+	
+</PropertyList>
diff --git a/Models/A320-200-IAE.xml b/Models/A320-200-IAE.xml
index 6d717738..8afa4997 100644
--- a/Models/A320-200-IAE.xml
+++ b/Models/A320-200-IAE.xml
@@ -378,7 +378,6 @@
 		</unload>
 	</nasal>
 	
-	
 	<!-- Ground Services -->    
 	<model>
 		<name>ground_services</name>
diff --git a/Nasal/FMGC-c.nas b/Nasal/FMGC-c.nas
index 49bacfdd..fcf7257d 100644
--- a/Nasal/FMGC-c.nas
+++ b/Nasal/FMGC-c.nas
@@ -203,7 +203,7 @@ var loopFMA = maketimer(0.05, func {
 	}
 	
 	# Preselect HDG
-	if (getprop("/modes/fcu/hdg-time") + 10 >= elapsedtime) {
+	if (getprop("/modes/fcu/hdg-time") + 45 >= elapsedtime) {
 		setprop("/it-autoflight/custom/show-hdg", 1);
 	} else if (getprop("/it-autoflight/output/lat") != 0 and getprop("/it-autoflight/output/lat") != 5  and getprop("/it-autoflight/output/lat") != 9) {
 		setprop("/it-autoflight/custom/show-hdg", 0);
diff --git a/Nasal/autopush.nas b/Nasal/autopush.nas
index d024c7e2..02bdf7f1 100644
--- a/Nasal/autopush.nas
+++ b/Nasal/autopush.nas
@@ -42,7 +42,7 @@ var _loop = func() {
 		var time = getprop("/sim/time/elapsed-sec");
 		var prop = math.min(math.max(_K_p * deltaV, -_F_p), _F_p);
 		var speedup = getprop("/sim/speed-up");
-		var deriv = 0;
+		var deriv = 0.0;
 		dt = time - _time;
 		# XXX Sanitising dt. Smaller chance of freakout on lag spike.
 		if(dt > 0.0) {
@@ -50,7 +50,7 @@ var _loop = func() {
 				_int = math.min(math.max(_int + _K_i * dV * dt, -_F_i), _F_i);
 			}
 			if(dt > 0.002) {
-				var deriv = math.min(math.max(_K_d * dV / dt, -_F_d), _F_d);
+				deriv = math.min(math.max(_K_d * dV / dt, -_F_d), _F_d);
 			}
 		}
 		var accel = prop + _int + deriv;
diff --git a/Nasal/autopush_driver.nas b/Nasal/autopush_driver.nas
index 53170c27..5d6577cd 100644
--- a/Nasal/autopush_driver.nas
+++ b/Nasal/autopush_driver.nas
@@ -34,7 +34,7 @@ var _loop = func() {
 	D *= NM2M;
 	# FIXME Use _K_V and total remaining distance.
 	var V = _F_V;
-	if ((D < _D_min) or (abs(geo.normdeg180(A - psi) > 90.0))) {
+	if ((D < _D_min) or (abs(geo.normdeg180(A - psi) > 45.0))) {
 		_to_wp += 1;
 		if (_to_wp == size(_route)) {
 			_done();
diff --git a/Nasal/electrical.nas b/Nasal/electrical.nas
index 7a3d6182..06c0aa4e 100644
--- a/Nasal/electrical.nas
+++ b/Nasal/electrical.nas
@@ -160,6 +160,8 @@ var ELEC = {
 		setprop("/systems/electrical/battery2-amps", 0);
 		setprop("/systems/electrical/battery1-percent", 68);
 		setprop("/systems/electrical/battery2-percent", 68);
+		setprop("/systems/electrical/battery1-time", 0);
+		setprop("/systems/electrical/battery2-time", 0);
 		setprop("/systems/electrical/bus/dc1", 0);
 		setprop("/systems/electrical/bus/dc2", 0);
 		setprop("/systems/electrical/bus/dcbat", 0);
diff --git a/Systems/a320-fcs.xml b/Systems/a320-fcs.xml
index a0f8bcf9..4123cf3e 100644
--- a/Systems/a320-fcs.xml
+++ b/Systems/a320-fcs.xml
@@ -1,5 +1,4 @@
 <!-- Airbus A320 FCS/FBW -->
-<!-- Joshua Davidson (it0uchpods) -->
 
 <!-- Copyright (c) 2018 Joshua Davidson (it0uchpods) -->
 
@@ -277,8 +276,8 @@
 						<tableData>
 							          -1         0         1
 							-0.575959  0.261799  0.000000  0.000000
-							-0.575958  0.000000  0.000000  0.000000
-							 0.575958  0.000000  0.000000  0.000000
+							-0.488692  0.000000  0.000000  0.000000
+							 0.488692  0.000000  0.000000  0.000000
 							 0.575959  0.000000  0.000000 -0.261799
 						</tableData>
 					</table>
@@ -306,11 +305,11 @@
 						<independentVar lookup="row">attitude/roll-rad</independentVar>
 						<independentVar lookup="column">fbw/roll/a-i</independentVar>
 						<tableData>
-							          -1         0         1
-							-1.169370  0.261799  0.000000  0.000000
-							-1.169369  0.000000  0.000000  0.000000
-							 1.169369  0.000000  0.000000  0.000000
-							 1.169370  0.000000  0.000000 -0.261799
+							          -1.0      -0.1       0.0       0.1       1.0
+							-1.169370  0.261799  0.000000  0.000000  0.000000  0.000000
+							-1.082100  0.000000  0.000000  0.000000  0.000000  0.000000
+							 1.082100  0.000000  0.000000  0.000000  0.000000  0.000000
+							 1.169370  0.000000  0.000000  0.000000  0.000000 -0.261799
 						</tableData>
 					</table>
 					<table>
@@ -367,8 +366,8 @@
 						<tableData>
 							          -1         0         1
 							-0.698132  0.261799  0.000000  0.000000
-							-0.698131  0.000000  0.000000  0.000000
-							 0.698131  0.000000  0.000000  0.000000
+							-0.610865  0.000000  0.000000  0.000000
+							 0.610865  0.000000  0.000000  0.000000
 							 0.698132  0.000000  0.000000 -0.261799
 						</tableData>
 					</table>
@@ -436,14 +435,10 @@
 			</test>
 		</switch>
 		
-		<fcs_function name="fbw/roll/rate-error">
-			<function>
-				<difference>
-					<property>fbw/roll/p-r_s-s</property>
-					<property>fbw/roll/rate-demand-lag</property>
-				</difference>
-			</function>
-		</fcs_function>
+		<summer name="fbw/roll/rate-error">
+			<input>fbw/roll/p-r_s-s</input>
+			<input>-fbw/roll/rate-demand-lag</input>
+		</summer>
 		
 		<switch name="fbw/roll/trigger">
 			<default value="0"/>
@@ -735,14 +730,10 @@
 			</function>
 		</fcs_function>
 		
-		<fcs_function name="fbw/pitch/g-error">
-			<function>
-				<difference>
-					<property>fbw/pitch/g-computed</property>
-					<property>fbw/pitch/g-demand</property>
-				</difference>
-			</function>
-		</fcs_function>
+		<summer name="fbw/pitch/g-error">
+			<input>fbw/pitch/g-computed</input>
+			<input>-fbw/pitch/g-demand</input>
+		</summer>
 		
 		<!-- Goes to Systems/fbw-pitch.xml then back as fbw/pitch/g-pi -->
 		
@@ -777,8 +768,8 @@
 						<tableData>
 							          -1         0         1
 							-0.261799  0.000000  0.000000  0.087266
-							-0.261798  0.000000  0.000000  0.000000
-							 0.523598  0.000000  0.000000  0.000000
+							-0.174533  0.000000  0.000000  0.000000
+							 0.436332  0.000000  0.000000  0.000000
 							 0.523599 -0.087266  0.000000  0.000000
 						</tableData>
 					</table>
@@ -815,7 +806,7 @@
 						<independentVar lookup="column">fbw/pitch/g-pi-switched</independentVar>
 						<tableData>
 							          -1         0       
-							 0.523598 -0.026180  0.000000
+							 0.436332 -0.026180  0.000000
 							 0.523599 -0.087266  0.000000
 						</tableData>
 					</table>
@@ -883,14 +874,10 @@
 			</test>
 		</switch>
 		
-		<fcs_function name="fbw/pitch/rate-error">
-			<function>
-				<difference>
-					<property>fbw/pitch/t-r_s-s</property>
-					<property>fbw/pitch/rate-demand-lag</property>
-				</difference>
-			</function>
-		</fcs_function>
+		<summer name="fbw/pitch/rate-error">
+			<input>fbw/pitch/t-r_s-s</input>
+			<input>-fbw/pitch/rate-demand-lag</input>
+		</summer>
 		
 		<switch name="fbw/pitch/trigger">
 			<default value="0"/>
diff --git a/Systems/libraries.xml b/Systems/libraries.xml
index 451c58fa..fd3fdfad 100644
--- a/Systems/libraries.xml
+++ b/Systems/libraries.xml
@@ -68,38 +68,18 @@
 	
 	<filter>
 		<name>FF 1</name>
-		<type>gain</type>
-		<gain>1.0</gain>
-		<update-interval-secs type="double">0.05</update-interval-secs>
-		<input>
-			<expression>
-				<table>
-					<property>/engines/engine[0]/fuel-flow_pph</property> 
-					<entry><ind>   0</ind><dep>   0</dep></entry>
-					<entry><ind>2000</ind><dep>1387</dep></entry>
-					<entry><ind>9000</ind><dep>9847</dep></entry>
-				</table>
-			</expression>
-		</input>
+		<type>exponential</type>
+		<input>/engines/engine[0]/fuel-flow_pph</input>
 		<output>/engines/engine[0]/fuel-flow_actual</output>
+		<filter-time>0.32</filter-time>
 	</filter>
 	
 	<filter>
 		<name>FF 2</name>
-		<type>gain</type>
-		<gain>1.0</gain>
-		<update-interval-secs type="double">0.05</update-interval-secs>
-		<input>
-			<expression>
-				<table>
-					<property>/engines/engine[1]/fuel-flow_pph</property> 
-					<entry><ind>   0</ind><dep>   0</dep></entry>
-					<entry><ind>2000</ind><dep>1387</dep></entry>
-					<entry><ind>9000</ind><dep>9847</dep></entry>
-				</table>
-			</expression>
-		</input>
+		<type>exponential</type>
+		<input>/engines/engine[1]/fuel-flow_pph</input>
 		<output>/engines/engine[1]/fuel-flow_actual</output>
+		<filter-time>0.32</filter-time>
 	</filter>
 	
 	<filter>
diff --git a/revision.txt b/revision.txt
index e0af25d9..c3a4e75b 100644
--- a/revision.txt
+++ b/revision.txt
@@ -1 +1 @@
-4714
\ No newline at end of file
+4720
\ No newline at end of file