diff --git a/.gitattributes b/.gitattributes
index 6e57dfc79ee2e78ed6d46df1d0fb92b0363813a3..9db2a9b31b4294026849cbb1f6dd79575853f726 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -3810,6 +3810,7 @@ RTCP/Cobalt/GPUProc/share/gpu/kernels/IntToFloat.cuh -text
 RTCP/Cobalt/GPUProc/src/backward/CL/cl.hpp -text
 RTCP/Cobalt/GPUProc/src/cpu_utils.cc -text
 RTCP/Cobalt/GPUProc/src/cpu_utils.h -text
+RTCP/Cobalt/GPUProc/src/scripts/get_casacore_measures_data.sh eol=lf
 RTCP/Cobalt/GPUProc/src/scripts/runObservation.sh -text
 RTCP/Cobalt/GPUProc/src/scripts/startBGL.sh -text
 RTCP/Cobalt/GPUProc/src/scripts/stopBGL.sh -text
diff --git a/RTCP/Cobalt/GPUProc/src/scripts/get_casacore_measures_data.sh b/RTCP/Cobalt/GPUProc/src/scripts/get_casacore_measures_data.sh
new file mode 100755
index 0000000000000000000000000000000000000000..8e0a40290c031e7d85a08b2425b492749cea8a91
--- /dev/null
+++ b/RTCP/Cobalt/GPUProc/src/scripts/get_casacore_measures_data.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+# get_casacore_measures_tables.sh
+# Retrieve new casacore measures tables and install it atomically.
+
+# $Id$
+
+measures_ftp_path=ftp://ftp.atnf.csiro.au/pub/software/measures_data
+measures_data_filename=measures_data.tar.bz2
+measures_md5sum_filename=$measures_data_filename.md5sum
+measures_md5sum_filename2=$measures_md5sum_filename.1  # wget does this if exists
+update_id=`date +%FT%T.%N`  # e.g. 2013-09-26T01:58:30.098006623
+
+
+cd $HOME/root/share
+mkdir -p aips++
+cd aips++
+
+# Generate date timestamp for a directory to store the table update.
+# Mangle in nanosecs to survive concurrent update (don't do it!)
+mkdir $update_id
+cd $update_id
+
+# Get the data from CSIRO's (slow from NL) FTP server. About 1 MB may take a minute.
+# Get the md5sum twice, so we safe ourselves another download of the archive when they update the files in between.
+# By default, when wget downloads a file, the timestamp is set to match the timestamp from the remote file.
+wget --tries=4 \
+  $measures_ftp_path/$measures_md5sum_filename \
+  $measures_ftp_path/$measures_data_filename \
+  $measures_ftp_path/$measures_md5sum_filename
+
+# Verify that md5 hash is equal to hash in $measures_md5sum_filename
+# No need to compare the filename. (And note that the .md5sum from CSIRO contains a CSIRO path.)
+md5sum_pre=`cut -f 1 -d ' ' $measures_md5sum_filename`
+data_md5=`md5sum $measures_data_filename | cut -f 1 -d ' '`
+md5sum_post=`cut -f 1 -d ' ' $measures_md5sum_filename2`
+if [md5sum_pre -ne data_md5 && md5sum_post -ne data_md5]; then
+  echo "MD5 checksums failed to match. Deleting downloaded files. Retrying retrieval once."
+  
+  retrieve()
+  #check/loop
+fi
+echo "MD5 checksum matches the archive."
+
+# Unpack. This will create data/ephemeris/ and data/geodetic/
+tar jxf measures_data.tar.bz2
+
+# Everything cool. Switch data/ symlink to the new data/ _atomically_ with a rename.
+# No race with a reader possible. (As long as we don't delete the old data files too early.)
+cd ..   # out of $update_id/
+ln -s $update_id/data data_tmp && mv -Tf data_tmp data
+sync
+