diff --git a/src/Scripting/NasalSys.cxx b/src/Scripting/NasalSys.cxx
index c7063647c..1a894415b 100644
--- a/src/Scripting/NasalSys.cxx
+++ b/src/Scripting/NasalSys.cxx
@@ -355,6 +355,22 @@ void FGNasalSys::loadPropertyScripts()
         if(n->hasChild("module"))
             module = n->getStringValue("module");
 
+        // allow multiple files to be specified within in a single
+        // Nasal module tag
+        int j = 0;
+        SGPropertyNode *fn;
+        bool file_specified = false;
+        while ( (fn = n->getChild("file", j)) != NULL ) {
+            file_specified = true;
+            const char* file = fn->getStringValue();
+            SGPath p(globals->get_fg_root());
+            p.append(file);
+            readScriptFile(p, module);
+            j++;
+        }
+
+        // Old code which only allowed a single file to be specified per module
+        /*
         const char* file = n->getStringValue("file");
         if(!n->hasChild("file")) file = 0; // Hrm...
         if(file) {
@@ -362,13 +378,14 @@ void FGNasalSys::loadPropertyScripts()
             p.append(file);
             readScriptFile(p, module);
         }
+        */
         
         const char* src = n->getStringValue("script");
         if(!n->hasChild("script")) src = 0; // Hrm...
         if(src)
             initModule(module, n->getPath(), src, strlen(src));
 
-        if(!file && !src)
+        if(!file_specified && !src)
             SG_LOG(SG_NASAL, SG_ALERT, "Nasal error: " <<
                    "no <file> or <script> defined in " <<
                    "/nasal/" << module);