diff --git a/Input/Joysticks/CH/pro-yoke-usb.xml b/Input/Joysticks/CH/pro-yoke-usb.xml
index d3ba87c7d..65b167bde 100644
--- a/Input/Joysticks/CH/pro-yoke-usb.xml
+++ b/Input/Joysticks/CH/pro-yoke-usb.xml
@@ -208,18 +208,16 @@
  <button n="4">
   <repeatable>false</repeatable>
   <binding>
-   <command>property-assign</command>
-   <property>/controls/gear/gear-down</property>
-   <value>false</value>
+   <command>nasal</command>
+   <script>controls.gearDown(0)</script>
   </binding>
  </button>
 
  <button n="5">
   <repeatable>false</repeatable>
   <binding>
-   <command>property-assign</command>
-   <property>/controls/gear/gear-down</property>
-   <value>true</value>
+   <command>nasal</command>
+   <script>controls.gearDown(1)</script>
   </binding>
  </button>
 
diff --git a/Input/Joysticks/Microsoft/sidewinder-precision-pro.xml b/Input/Joysticks/Microsoft/sidewinder-precision-pro.xml
index d0fb8bfcf..a60f1288c 100644
--- a/Input/Joysticks/Microsoft/sidewinder-precision-pro.xml
+++ b/Input/Joysticks/Microsoft/sidewinder-precision-pro.xml
@@ -21,7 +21,7 @@
 * Button 5:                       flap down           Button A                    0010
 * Button 6:                       left brake only     Button C                    0040
 * Button 7:                       right brake only    Button D                    0080
-* Button 8(Unix)/9(Win):          gear up             Shift Button                0100(unix), 0200(Win)
+* Button 8(Unix)/9(Win):          gear toggle         Shift Button                0100(unix), 0200(Win)
 ************************************************************************
 $Id$
 -->
@@ -257,7 +257,7 @@ $Id$
  </button>
 
  <button>
-  <desc>Gear Up.</desc>
+  <desc>Gear Toggle.</desc>
   <number>
     <unix>8</unix>
     <mac>8</mac>
@@ -265,11 +265,9 @@ $Id$
    </number>  
   <repeatable>false</repeatable>
   <binding>
-      <command>property-assign</command>
-      <property>/controls/gear/gear-down</property>
-      <value type="double">0.0</value>
+   <command>nasal</command>
+   <script>controls.gearToggle()</script>
   </binding>
-  
  </button>
 
 </PropertyList>
diff --git a/Input/Joysticks/Saitek/Cyborg-Evo.xml b/Input/Joysticks/Saitek/Cyborg-Evo.xml
index 3a6f650cf..27f18e9e7 100644
--- a/Input/Joysticks/Saitek/Cyborg-Evo.xml
+++ b/Input/Joysticks/Saitek/Cyborg-Evo.xml
@@ -288,7 +288,7 @@ axis 5: 	(hat up-down)		look u/d		Trim Elevator		Adj Propeller	#
 			if (mod == nil or mod == 0) {
 				controls.stepFlaps(-1);
 			} elsif (mod == 1) {
-				setprop("/controls/gear/gear-down", 0);
+				controls.gearDown(0);
 			} elsif (mod == 2) {
 				view.increase();
 			} elsif (mod == 3) {
@@ -309,7 +309,7 @@ axis 5: 	(hat up-down)		look u/d		Trim Elevator		Adj Propeller	#
 			if (mod == nil or mod == 0) {
 				controls.stepFlaps(1);
 			} elsif (mod == 1) {
-				setprop("/controls/gear/gear-down", 1);
+				controls.gearDown(1);
 			} elsif (mod == 2) {
 				view.decrease();
 			} elsif (mod == 3) {
diff --git a/Input/Joysticks/Saitek/Cyborg-Gold-3d-USB.xml b/Input/Joysticks/Saitek/Cyborg-Gold-3d-USB.xml
index dec169747..ad30377fe 100644
--- a/Input/Joysticks/Saitek/Cyborg-Gold-3d-USB.xml
+++ b/Input/Joysticks/Saitek/Cyborg-Gold-3d-USB.xml
@@ -237,7 +237,7 @@ ________________________________________________________________________________
 				if (mod == 0) {
 					controls.stepFlaps(-1);
 				} elsif (mod == 1) {
-					setprop("/controls/gear/gear-down", 0);
+					controls.gearDown(0);
 				} elsif (mod == 2) {
 					view.stepView(-1);
 				} elsif (mod == 3) {
@@ -282,7 +282,7 @@ ________________________________________________________________________________
 				if (mod == 0) {
 					controls.stepFlaps(1);
 				} elsif (mod == 1) {
-					setprop("/controls/gear/gear-down", 1);
+					controls.gearDown(1);
 				} elsif (mod == 2) {
 					view.stepView(1);
 				} elsif (mod == 3) {
diff --git a/Input/Joysticks/Saitek/X45.xml b/Input/Joysticks/Saitek/X45.xml
index f92236982..ffb500d83 100644
--- a/Input/Joysticks/Saitek/X45.xml
+++ b/Input/Joysticks/Saitek/X45.xml
@@ -227,8 +227,8 @@ $Id$
  <button n="1">
   <desc>Landing Gear Up/Down Toggle</desc>
   <binding>
-   <command>property-toggle</command>
-   <property>/controls/gear/gear-down</property>
+   <command>nasal</command>
+   <script>controls.gearToggle()</script>
   </binding>
  </button>
 
diff --git a/Input/Joysticks/ThrustMaster/Top-Gun-Afterburner.xml b/Input/Joysticks/ThrustMaster/Top-Gun-Afterburner.xml
index a28228882..af7178c74 100644
--- a/Input/Joysticks/ThrustMaster/Top-Gun-Afterburner.xml
+++ b/Input/Joysticks/ThrustMaster/Top-Gun-Afterburner.xml
@@ -271,7 +271,7 @@ ________________________________________________________________________________
 				if (mod == nil or mod == 0) {
 					controls.stepFlaps(-1);
 				} elsif (mod == 1) {
-					setprop("/controls/gear/gear-down", 0);
+					controls.gearDown(0);
 				} elsif (mod == 2) {
 					view.stepView(-1);
 				} elsif (mod == 3) {
@@ -320,7 +320,7 @@ ________________________________________________________________________________
 				if (mod == nil or mod == 0) {
 					controls.stepFlaps(1);
 				} elsif (mod == 1) {
-					setprop("/controls/gear/gear-down", 1);
+					controls.gearDown(1);
 				} elsif (mod == 2) {
 					view.stepView(1);
 				} elsif (mod == 3) {
diff --git a/Input/Joysticks/ThrustMaster/Top-Gun-Fox2-Pro-USB.xml b/Input/Joysticks/ThrustMaster/Top-Gun-Fox2-Pro-USB.xml
index df391d153..74c989816 100644
--- a/Input/Joysticks/ThrustMaster/Top-Gun-Fox2-Pro-USB.xml
+++ b/Input/Joysticks/ThrustMaster/Top-Gun-Fox2-Pro-USB.xml
@@ -128,9 +128,8 @@
  <button n="2">
   <repeatable>false</repeatable>
   <binding>
-   <command>property-assign</command>
-   <property>/controls/gear/gear-down</property>
-   <value>true</value>
+   <command>nasal</command>
+   <script>controls.gearToggle()</script>
   </binding>
  </button>
 
diff --git a/Nasal/controls.nas b/Nasal/controls.nas
index 246d22e45..3ae99ab1b 100644
--- a/Nasal/controls.nas
+++ b/Nasal/controls.nas
@@ -315,3 +315,4 @@ aileronTrimAxis = func { aileronTrim(cmdarg().getNode("value").getValue()); }
 rudderTrimAxis = func { rudderTrim(cmdarg().getNode("value").getValue()); }
 
 gearDown = func { setprop("/controls/gear/gear-down", arg[0]); }
+gearToggle = func { gearDown(!getprop("/controls/gear/gear-down")); }