diff --git a/CHANGELOG.md b/CHANGELOG.md
index a830b35b835a82483d5d31930055687f73affbf0..ac4d8eba8bf5bc379f594cd43a749204213996fe 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,8 @@
 
 Changes currently on master, but not under a tag.
 
+- Fixed a bug which caused `Interferometer.detector_tensor` not to update when `latitude`, `longitude`, `xarm_azimuth`, `yarm_azimuth`, `xarm_tilt`, `yarm_tilt` were updated.
+
 ## [0.3.1] 2018-11-06
 
 ### Changes
diff --git a/bilby/gw/detector.py b/bilby/gw/detector.py
index 23eb90fbd16d28231fba60a322307fd172a764e4..20b67f79cec9a67414f9eb155c6a37ae3e5ce051 100644
--- a/bilby/gw/detector.py
+++ b/bilby/gw/detector.py
@@ -1134,6 +1134,8 @@ class Interferometer(object):
         array_like: A 3x3 array representation of the detector tensor
 
         """
+        if not self.__x_updated or not self.__y_updated:
+            _, _ = self.x, self.y  # noqa
         if not self.__detector_tensor_updated:
             self.__detector_tensor = 0.5 * (np.einsum('i,j->ij', self.x, self.x) - np.einsum('i,j->ij', self.y, self.y))
             self.__detector_tensor_updated = True
diff --git a/test/detector_test.py b/test/detector_test.py
index 154bacf4a1fb020d2569c689a87bb9c7240e1beb..59efc53c8cb1e0986868e3c2a9a1263895882699 100644
--- a/test/detector_test.py
+++ b/test/detector_test.py
@@ -179,18 +179,50 @@ class TestDetector(unittest.TestCase):
         _ = self.ifo.detector_tensor
         with mock.patch('numpy.einsum') as m:
             m.return_value = 1
-            self.assertIsInstance(self.ifo.detector_tensor, np.ndarray)
+            expected = np.array([[-9.24529394e-06, 1.02425803e-04, 3.24550668e-04],
+                                 [1.02425803e-04, 1.37390844e-03, -8.61137566e-03],
+                                 [3.24550668e-04, -8.61137566e-03, -1.36466315e-03]])
+            self.assertTrue(np.allclose(expected, self.ifo.detector_tensor))
 
-    def test_detector_tensor_with_x_update(self):
+    def test_detector_tensor_with_x_azimuth_update(self):
+        _ = self.ifo.detector_tensor
         with mock.patch('numpy.einsum') as m:
             m.return_value = 1
-            self.ifo.xarm_azimuth = 12
-            self.assertEqual(self.ifo.detector_tensor, 0)
+            self.ifo.xarm_azimuth = 1
+            self.assertEqual(0, self.ifo.detector_tensor)
+
+    def test_detector_tensor_with_y_azimuth_update(self):
+        _ = self.ifo.detector_tensor
+        with mock.patch('numpy.einsum') as m:
+            m.return_value = 1
+            self.ifo.yarm_azimuth = 1
+            self.assertEqual(0, self.ifo.detector_tensor)
 
-    def test_detector_tensor_with_y_update(self):
+    def test_detector_tensor_with_x_tilt_update(self):
+        _ = self.ifo.detector_tensor
         with mock.patch('numpy.einsum') as m:
             m.return_value = 1
-            self.ifo.yarm_azimuth = 12
+            self.ifo.xarm_tilt = 1
+            self.assertEqual(0, self.ifo.detector_tensor)
+
+    def test_detector_tensor_with_y_tilt_update(self):
+        _ = self.ifo.detector_tensor
+        with mock.patch('numpy.einsum') as m:
+            m.return_value = 1
+            self.ifo.yarm_tilt = 1
+            self.assertEqual(0, self.ifo.detector_tensor)
+
+    def test_detector_tensor_with_longitude_update(self):
+        with mock.patch('numpy.einsum') as m:
+            m.return_value = 1
+            self.ifo.longitude = 1
+            self.assertEqual(0, self.ifo.detector_tensor)
+
+    def test_detector_tensor_with_latitude_update(self):
+        with mock.patch('numpy.einsum') as m:
+            _ = self.ifo.detector_tensor
+            m.return_value = 1
+            self.ifo.latitude = 1
             self.assertEqual(self.ifo.detector_tensor, 0)
 
     def test_antenna_response_default(self):
@@ -312,7 +344,6 @@ class TestDetector(unittest.TestCase):
                     float(self.maximum_frequency), float(self.length), float(self.latitude), float(self.longitude),
                     float(self.elevation), float(self.xarm_azimuth), float(self.yarm_azimuth), float(self.xarm_tilt),
                     float(self.yarm_tilt))
-        print(repr(self.ifo))
         self.assertEqual(expected, repr(self.ifo))
 
 
@@ -825,12 +856,12 @@ class TestPowerSpectralDensityWithoutFiles(unittest.TestCase):
 
     def test_power_spectral_density_interpolated_from_asd_array(self):
         expected = np.array([25.])
-        psd = bilby.gw.detector.PowerSpectralDensity(frequency_array=self.frequency_array, asd_array = self.asd_array)
+        psd = bilby.gw.detector.PowerSpectralDensity(frequency_array=self.frequency_array, asd_array=self.asd_array)
         self.assertEqual(expected, psd.power_spectral_density_interpolated(2))
 
     def test_power_spectral_density_interpolated_from_psd_array(self):
         expected = np.array([25.])
-        psd = bilby.gw.detector.PowerSpectralDensity(frequency_array=self.frequency_array, psd_array = self.psd_array)
+        psd = bilby.gw.detector.PowerSpectralDensity(frequency_array=self.frequency_array, psd_array=self.psd_array)
         self.assertEqual(expected, psd.power_spectral_density_interpolated(2))
 
     def test_from_amplitude_spectral_density_array(self):