diff --git a/src/Airports/GenAirports/build.cxx b/src/Airports/GenAirports/build.cxx
index 556b1171..1df3f552 100644
--- a/src/Airports/GenAirports/build.cxx
+++ b/src/Airports/GenAirports/build.cxx
@@ -177,6 +177,13 @@ static point_list calc_elevations( const string& root,
                                    const point_list& geod_nodes,
                                    double offset )
 {
+    string_list elev_src;
+    elev_src.clear();
+    elev_src.push_back( "SRTM-1" );
+    elev_src.push_back( "SRTM-3" );
+    elev_src.push_back( "DEM-3" );
+    elev_src.push_back( "DEM-30" );
+
     bool done = false;
     point_list result = geod_nodes;
     int i, j;
@@ -205,25 +212,21 @@ static point_list calc_elevations( const string& root,
 	    SGBucket b( result[i].x(), result[i].y() );
 	    string base = b.gen_base_path();
 
-	    // try 3 arcsec arrays first
-	    string array_path = root + "/DEM-3/" + base 
-		+ "/" + b.gen_index_str() + ".arr";
-	    SG_LOG(SG_GENERAL, SG_DEBUG, "array_path = " << array_path);
-	
-	    if ( ! array.open(array_path) ) {
-		SG_LOG(SG_GENERAL, SG_DEBUG, "ERROR: cannot open 3 arcsec file "
-                       << array_path);
-		SG_LOG(SG_GENERAL, SG_DEBUG, "trying 30 arcsec file");
-		
-		// try 30 arcsec array
-		array_path = root + "/DEM-30/" + base 
-		    + "/" + b.gen_index_str() + ".arr";
-		SG_LOG(SG_GENERAL, SG_DEBUG, "array_path = " << array_path);
-		if ( ! array.open(array_path) ) {
-		    SG_LOG(SG_GENERAL, SG_ALERT,
-			   "ERROR: cannot open 30 arcsec file " << array_path);
-		}
-	    }
+	    // try the various elevation sources
+            bool found_file = false;
+            unsigned int j = 0;
+            while ( !found_file && j < elev_src.size() ) {
+                string array_path = root + "/" + elev_src[j] + "/" + base 
+                    + "/" + b.gen_index_str() + ".arr";
+                if ( array.open(array_path) ) {
+                    found_file = true;
+                    SG_LOG(SG_GENERAL, SG_DEBUG, "array_path = " << array_path);
+                }                    
+                j++;
+            }
+            
+            // this will fill in a zero structure if no array data
+            // found/opened
 	    array.parse( b );
 
 	    // update all the non-updated elevations that are inside