diff --git a/modules/Bio/EnsEMBL/Registry.pm b/modules/Bio/EnsEMBL/Registry.pm
index dc97ac3efd83f1b65ffb9a168ab472321c9ede52..2ea464296f98c578826bb8d230e82533c241678e 100644
--- a/modules/Bio/EnsEMBL/Registry.pm
+++ b/modules/Bio/EnsEMBL/Registry.pm
@@ -1742,6 +1742,7 @@ sub load_registry_from_db {
   my $ontology_version;
 
   my $taxonomy_db;
+  my $taxonomy_db_versioned;
   my $ensembl_metadata_db;
   my $ensembl_metadata_db_versioned;
 
@@ -1817,6 +1818,11 @@ sub load_registry_from_db {
       }
     } elsif ( $db =~ /^ncbi_taxonomy$/ ) {
         $taxonomy_db      = $db;
+    }
+    elsif ( $db =~ m{ \A ncbi_taxonomy_(\d+) \z }msx ) {
+      if ( $1 eq $software_version ) {
+        $taxonomy_db_versioned = $db;
+      }
     } elsif ( $db =~ /^ensembl_metadata$/ ) {
         $ensembl_metadata_db      = $db;
     }
@@ -2327,7 +2333,7 @@ sub load_registry_from_db {
 
   # Taxonomy
 
-  if ( defined $taxonomy_db) {
+  if ( ( defined $taxonomy_db ) || ( defined $taxonomy_db_versioned ) ) {
      
     my $has_taxonomy = eval {require Bio::EnsEMBL::Taxonomy::DBSQL::TaxonomyDBAdaptor};
     if($@ or (!defined $has_taxonomy)) {
@@ -2335,6 +2341,16 @@ sub load_registry_from_db {
           print "ensembl_taxonomy API not found - ignoring $taxonomy_db\n";
         }
     } else {
+
+        my $taxonomy_dbname;
+        # Versioned database has priority over unversioned one.
+        if ( defined $taxonomy_db_versioned ) {
+          $taxonomy_dbname = $taxonomy_db_versioned;
+        }
+        else {
+          $taxonomy_dbname = $taxonomy_db;
+        }
+
         my $dba = Bio::EnsEMBL::Taxonomy::DBSQL::TaxonomyDBAdaptor->new(
                                 '-species' => 'multi' . $species_suffix,
                                 '-group'   => 'taxonomy',
@@ -2342,10 +2358,10 @@ sub load_registry_from_db {
                                 '-port'    => $port,
                                 '-user'    => $user,
                                 '-pass'    => $pass,
-                                '-dbname'  => $taxonomy_db, );
+                                '-dbname'  => $taxonomy_dbname, );
 
        if ($verbose) {
-         printf( "%s loaded\n", $taxonomy_db );
+         printf( "%s loaded\n", $taxonomy_dbname );
        }
      }
   }