diff --git a/Nasal/weather_scenario.nas b/Nasal/weather_scenario.nas
index 8d15255b1..94f7a56d4 100644
--- a/Nasal/weather_scenario.nas
+++ b/Nasal/weather_scenario.nas
@@ -1,6 +1,17 @@
-# Set the global weather according to the defined
-# scenario in /environment/weather-scenario
 #
+# find a weather scenario by it's <name> element
+# returns /environment/weather-scenarios/scenario[name=$name]
+#
+find_weather_scenario = func(name) {
+	var wsn = props.globals.getNode( "/environment/weather-scenarios" );
+	if( wsn == nil ) return nil;
+	var scenarios = 
+	foreach (var scenario; wsn.getChildren("scenario") )
+		if( scenario.getNode("name").getValue() == name )
+			return scenario;
+	return nil;
+}
+
 var initialize_weather_scenario = func {
   getprop( "/environment/params/metar-updates-environment", 0 ) == 0 and return;
   getprop( "/environment/realwx/enabled", 0 ) and return;
@@ -21,7 +32,32 @@ var initialize_weather_scenario = func {
 };
 
 _setlistener("/sim/signals/nasal-dir-initialized", func {
+
 	initialize_weather_scenario();
-	delete(globals, "weather_scenario");
+
+	setlistener("/environment/weather-scenario", func(n) {
+		var scenario = find_weather_scenario( n.getValue() );
+		if( scenario == nil ) return;
+		var scenarioName = scenario.getNode("name",1).getValue();
+		if( scenarioName == "Disabled" ) {
+			setprop( "/environment/params/metar-updates-environment", 0 );
+			setprop( "/environment/realwx/enabled", 0 );
+			setprop( "/environment/config/enabled", 0 );
+		} else if( scenarioName == "Live data" ) {
+			setprop( "/environment/params/metar-updates-environment", 1 );
+			setprop( "/environment/realwx/enabled", 1 );
+			setprop( "/environment/config/enabled", 1 );
+		} else if( scenarioName == "Manual input" ) {
+			setprop( "/environment/params/metar-updates-environment", 1 );
+			setprop( "/environment/realwx/enabled", 0 );
+			setprop( "/environment/config/enabled", 1 );
+		} else {
+			setprop( "/environment/params/metar-updates-environment", 1 );
+			setprop( "/environment/realwx/enabled", 0 );
+			setprop( "/environment/config/enabled", 1 );
+			var metar = scenario.getNode("metar",1).getValue();
+			setprop( "environment/metar/data", metar );
+		}
+	});
 });