diff --git a/modules/Bio/EnsEMBL/Map/DBSQL/DitagFeatureAdaptor.pm b/modules/Bio/EnsEMBL/Map/DBSQL/DitagFeatureAdaptor.pm
index b39a5edbce54b00afb51bbb134e1489c6926fe08..7ae925244d1b5398c2b2a0c38220978e38c8ded2 100644
--- a/modules/Bio/EnsEMBL/Map/DBSQL/DitagFeatureAdaptor.pm
+++ b/modules/Bio/EnsEMBL/Map/DBSQL/DitagFeatureAdaptor.pm
@@ -98,6 +98,7 @@ sub fetch_by_dbID {
 
   Arg [1]    : ditag dbID
   Arg [2]    : (optional) ditag-pair dbID
+  Arg [3]    : (optional) analysis ID
   Example    : @my_tags = @{$ditagfeature_adaptor->fetch_all_by_ditag_id($my_id)};
   Description: Retrieves all ditagFeatures from the database linking to a specific ditag-id
   Returntype : listref of Bio::EnsEMBL::Map::DitagFeature
@@ -106,7 +107,7 @@ sub fetch_by_dbID {
 =cut
 
 sub fetch_all_by_ditagID {
-  my ($self, $ditag_id, $ditag_pair_id) = @_;
+  my ($self, $ditag_id, $ditag_pair_id, $analysis_id) = @_;
 
   my $sql = "SELECT ditag_feature_id, ditag_id, seq_region_id, seq_region_start, 
              seq_region_end, seq_region_strand, analysis_id, hit_start, hit_end, 
@@ -116,6 +117,9 @@ sub fetch_all_by_ditagID {
   if($ditag_pair_id){
     $sql .= "AND ditag_pair_id = ? ";
   }
+  if($analysis_id){
+    $sql .= "AND analysis_id = ? ";
+  }
   $sql   .= "ORDER BY ditag_pair_id";
   my $sth = $self->prepare($sql);
   if($ditag_pair_id){
diff --git a/modules/Bio/EnsEMBL/Map/DitagFeature.pm b/modules/Bio/EnsEMBL/Map/DitagFeature.pm
index 6f3bb5dce7b0e2e0b15700649f72133fecfbcfb8..8f0e7c02339b16f8ff332d3e1f5116849c90f8e0 100644
--- a/modules/Bio/EnsEMBL/Map/DitagFeature.pm
+++ b/modules/Bio/EnsEMBL/Map/DitagFeature.pm
@@ -183,14 +183,18 @@ sub get_ditag_location {
   else{
     my ($ditag_a, $ditag_b, $more);
     eval{
-     ($ditag_a, $ditag_b, $more) = @{$self->adaptor->fetch_all_by_ditagID($self->ditag_id, $self->ditag_pair_id)};
+     ($ditag_a, $ditag_b, $more) = @{$self->adaptor->fetch_all_by_ditagID($self->ditag_id,
+									  $self->ditag_pair_id,
+									  $self->analysis->analysis_id)};
     };
     if($@ or !defined($ditag_a) or !defined($ditag_b)){
-      throw("Cannot find 2nd tag of pair (".$self->dbID.", ".$self->ditag_id.", ".$self->ditag_pair_id.")");
+      throw("Cannot find 2nd tag of pair (".$self->dbID.", ".$self->ditag_id.", ".
+	    $self->ditag_pair_id.", ".$self->analysis->analysis_id.")");
     }
     else{
       if(defined $more){
-	throw("More than two DitagFeatures were returned for ".$self->dbID.", ".$self->ditag_id.", ".$self->ditag_pair_id);
+	throw("More than two DitagFeatures were returned for ".$self->dbID.", ".$self->ditag_id
+	      .", ".$self->ditag_pair_id);
       }
 
       ($ditag_a->start < $ditag_b->start) ? ($start = $ditag_a->start) : ($start = $ditag_b->start);