diff --git a/modules/Bio/EnsEMBL/DBSQL/SliceAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/SliceAdaptor.pm
index 359932d7f33e29499728b47cf99b36ca1dcb9780..c41cf40179fc824258b4c7d272915de27fd9778d 100644
--- a/modules/Bio/EnsEMBL/DBSQL/SliceAdaptor.pm
+++ b/modules/Bio/EnsEMBL/DBSQL/SliceAdaptor.pm
@@ -471,20 +471,21 @@ sub fetch_by_toplevel_location {
   my $number_seps_regex = qr/\s+|,|_/;
   
   if(my ($seq_region_name, $start, $end) = $location =~ $regex) {
-    if(defined $start && $start < 1) {
-      warning "Start was less than 1 (${start}) which is not allowed. Resetting to 1"  if ! $no_warnings;
-      $start = 1;
+    if(defined $start) {
+      if($start < 1) {
+        warning "Start was less than 1 (${start}) which is not allowed. Resetting to 1"  if ! $no_warnings;
+        $start = 1;
+      }
+      $start =~ s/$number_seps_regex//g; #cleanup any nomenclature like 1_000 or 1 000 or 1,000
     }
-    if(defined $end && $end < 1) {
-      throw "Cannot request negative or 0 end indexes through this interface. Given $end but expected something greater than 0";
+    if(defined $end) {
+      if($end < 1) {
+        throw "Cannot request negative or 0 end indexes through this interface. Given $end but expected something greater than 0";
+      }
+      $end =~ s/$number_seps_regex//g; #cleanup any nomenclature like 1_000 or 1 000 or 1,000
     }
     
     my $coord_system_name = 'toplevel';
-    
-    #cleanup any nomenclature like 1_000 or 1 000 or 1,000
-    $start =~ s/$number_seps_regex//g;
-    $end =~ s/$number_seps_regex//g;
-    
     my $slice = $self->fetch_by_region($coord_system_name, $seq_region_name, $start, $end, undef, undef, 0);
     return unless $slice;