diff --git a/modules/Bio/EnsEMBL/Pipeline/Production/StatsGenerator.pm b/modules/Bio/EnsEMBL/Pipeline/Production/StatsGenerator.pm
index 7d851a9f6e92aed7d35b93621914e7b378d8d720..ce53ed026748df0d6e5b5bf5d38ca929ce36651e 100644
--- a/modules/Bio/EnsEMBL/Pipeline/Production/StatsGenerator.pm
+++ b/modules/Bio/EnsEMBL/Pipeline/Production/StatsGenerator.pm
@@ -19,7 +19,11 @@ sub run {
   my $sum = 0;
 
   my $slices = Bio::EnsEMBL::Registry->get_adaptor($species, 'core', 'slice')->fetch_all('toplevel');
-  while (my $slice = shift @$slices) {
+  my @sorted_slices = 
+     sort( { $a->coord_system()->rank() <=> $b->coord_system()->rank()
+             || $b->seq_region_length() <=> $a->seq_region_length() } @$slices) ;
+
+  while (my $slice = shift @sorted_slices) {
     foreach my $code (keys %attrib_codes) {
       my $count = $self->get_feature_count($slice, $code, $attrib_codes{$code});
       $self->store_attrib($slice, $count, $code);