diff --git a/modules/Bio/EnsEMBL/DBSQL/SliceAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/SliceAdaptor.pm
index dca2b8262af980eca2afbf522bf79efba33d94a7..77f653ae0a0537ce04c8cb07f078e6effd8275f3 100644
--- a/modules/Bio/EnsEMBL/DBSQL/SliceAdaptor.pm
+++ b/modules/Bio/EnsEMBL/DBSQL/SliceAdaptor.pm
@@ -97,6 +97,7 @@ use strict;
 
 use Bio::EnsEMBL::DBSQL::BaseAdaptor;
 use Bio::EnsEMBL::Slice;
+use Bio::EnsEMBL::CircularSlice;
 use Bio::EnsEMBL::Mapper;
 use Bio::EnsEMBL::LRGSlice;
 use Bio::EnsEMBL::Utils::Exception qw(throw deprecate warning stack_trace_dump);
@@ -221,11 +222,9 @@ sub fetch_by_region {
     }
 
     if ( !defined($cs) ) {
-      throw(
-             sprintf( "Unknown coordinate system:\n"
+      throw( sprintf( "Unknown coordinate system:\n"
                         . "name='%s' version='%s'\n",
-                      $coord_system_name, $version
-             ) );
+                      $coord_system_name, $version ) );
     }
 
     # fetching by toplevel is same as fetching w/o name or version
@@ -234,7 +233,7 @@ sub fetch_by_region {
       $version = undef;
     }
 
-  } ## end if ( defined($coord_system_name...
+  } ## end if ( defined($coord_system_name...))
 
   my $constraint;
   my $sql;
@@ -361,8 +360,7 @@ sub fetch_by_region {
               . "returned more than one result.\n"
               . "You might want to check whether the returned seq_region\n"
               . "(%s:%s) is the one you intended to fetch.\n",
-            $high_cs->name(), $seq_region_name
-          ) );
+            $high_cs->name(), $seq_region_name ) );
       }
 
       $cs = $high_cs;
@@ -383,38 +381,45 @@ sub fetch_by_region {
       $self->{'sr_id_cache'}->{"$id"}                       = $arr;
       $cs = $csa->fetch_by_dbID($cs_id);
     }
-  } ## end else [ if ( defined($arr) )
+  } ## end else [ if ( defined($arr) ) ]
 
   if ( !defined($end) ) { $end = $length }
 
   if ( $end + 1 < $start ) {
-    throw(
-           sprintf(
-                  "start [%d] must be less than or equal to end+1 [%d]",
-                  $start, $end + 1
-           ) );
+    my $new_sl =
+      Bio::EnsEMBL::CircularSlice->new(
+                                   -COORD_SYSTEM    => $cs,
+                                   -SEQ_REGION_NAME => $seq_region_name,
+                                   -SEQ_REGION_LENGTH => $length,
+                                   -START             => $start,
+                                   -END               => $end,
+                                   -STRAND            => 1,
+                                   -ADAPTOR           => $self );
+
+    return $new_sl;
   }
 
-  if(defined($self->{'lrg_region_test'}) and substr($cs->name,0,3) eq $self->{'lrg_region_test'}){
+  if ( defined( $self->{'lrg_region_test'} )
+       and substr( $cs->name, 0, 3 ) eq $self->{'lrg_region_test'} )
+  {
     return
-      Bio::EnsEMBL::LRGSlice->new( -COORD_SYSTEM      => $cs,
-				   -SEQ_REGION_NAME   => $seq_region_name,
-				   -SEQ_REGION_LENGTH => $length,
-				   -START             => $start,
-				   -END               => $end,
-				   -STRAND            => $strand,
-				   -ADAPTOR           => $self );    
-  }
-  else{
+      Bio::EnsEMBL::LRGSlice->new( -COORD_SYSTEM    => $cs,
+                                   -SEQ_REGION_NAME => $seq_region_name,
+                                   -SEQ_REGION_LENGTH => $length,
+                                   -START             => $start,
+                                   -END               => $end,
+                                   -STRAND            => $strand,
+                                   -ADAPTOR           => $self );
+  } else {
     return
-      Bio::EnsEMBL::Slice->new_fast({ 
-				     'coord_system'      => $cs,
-				     'seq_region_name'   => $seq_region_name,
-				     'seq_region_length' => $length,
-				     'start'             => $start,
-				     'end'               => $end,
-				     'strand'            => $strand,
-				     'adaptor'           => $self} );
+      Bio::EnsEMBL::Slice->new_fast( {
+                                  'coord_system'    => $cs,
+                                  'seq_region_name' => $seq_region_name,
+                                  'seq_region_length' => $length,
+                                  'start'             => $start,
+                                  'end'               => $end,
+                                  'strand'            => $strand,
+                                  'adaptor'           => $self } );
   }
 } ## end sub fetch_by_region