diff --git a/misc-scripts/meta_coord/update_meta_coord.pl b/misc-scripts/meta_coord/update_meta_coord.pl
new file mode 100755
index 0000000000000000000000000000000000000000..9eea176f002289589dc9d3b581c966548538082f
--- /dev/null
+++ b/misc-scripts/meta_coord/update_meta_coord.pl
@@ -0,0 +1,88 @@
+#!/usr/local/ensembl/bin/perl -w
+
+use strict;
+use Bio::EnsEMBL::DBSQL::DBConnection;
+use Getopt::Long;
+
+my $help = 0;
+my ($host, $port, $user, $pass, $dbname);
+
+my $usage = "\n$0 --host ecs2 --port 3364 --user ensadmin --pass ensembl --dbname homo_sapiens_core_27_35a
+
+[--help] displays this menu.
+
+This script will dump the current meta_coord table in homo_sapiens_core_27_35a.meta_coord file.
+Then it will update the meta_coord table for all the following table names one by one
+ affy_feature
+ assembly_exception
+ gene
+ exon
+ dna_align_feature
+ protein_align_feature
+ repeat_feature
+ prediction_transcript
+ prediction_exon
+ simple_feature
+ marker_feature
+ misc_feature
+ qtl_feature
+ karyotype
+ transcript
+ density_feature\n";
+
+GetOptions('help' => \$help,
+           'host=s' => \$host,
+           'port=i' => \$port,
+           'user=s' => \$user,
+           'pass=s' => \$pass,
+           'dbname=s' => \$dbname);
+
+if ($help || scalar @ARGV == 0) {
+  print $usage,"\n";
+  exit 0;
+}
+
+my $dbc = new Bio::EnsEMBL::DBSQL::DBConnection(-host => $host,
+                                                -port => $port,
+                                                -user => $user,
+                                                -pass => $pass,
+                                                -dbname => $dbname);
+
+my @table_names = qw(affy_feature
+                     assembly_exception
+                     gene
+                     exon
+                     dna_align_feature
+                     protein_align_feature
+                     repeat_feature
+                     prediction_transcript
+                     prediction_exon
+                     simple_feature
+                     marker_feature
+                     misc_feature
+                     qtl_feature
+                     karyotype
+                     transcript
+                     density_feature);
+
+unless (system("mysql -h$host -P$port -u$user -p$pass -N -e 'select * from meta_coord' $dbname > $dbname.meta_coord.backup") ==0) {
+  print STDERR "Can't dump the original meta_coord for back up\n";
+  exit 1;
+} else {
+  print STDERR "original meta_coord table backed up in $dbname.meta_coord.backup\n";
+}
+
+foreach my $table_name (@table_names) {
+  print STDERR "Updating $table_name table entries...";
+  my $sql = "delete from meta_coord where table_name = ? ";
+  my $sth = $dbc->prepare($sql);
+  $sth->execute($table_name);
+  $sth->finish;
+  
+  $sql = "insert into meta_coord select '$table_name',s.coord_system_id, max(t.seq_region_end-t.seq_region_start+1) from $table_name t, seq_region s where t.seq_region_id=s.seq_region_id group by s.coord_system_id";
+  $sth = $dbc->prepare($sql);
+  $sth->execute;
+  $sth->finish;
+  print STDERR "Done\n";
+}
+