diff --git a/ITRFDirection.cc b/ITRFDirection.cc
index ff6c8e5dc705dfd0b6d9747ff0a0c8705a333483..1f484926320826e469c952930f194e00e344cefd 100644
--- a/ITRFDirection.cc
+++ b/ITRFDirection.cc
@@ -80,6 +80,8 @@ ITRFDirection::ITRFDirection(const vector3r_t &direction):
 
 vector3r_t ITRFDirection::at(real_t time) const
 {
+    std::lock_guard<std::mutex> lock(itsMutex);
+
     // Cannot use MeasFrame::resetEpoch(Double), because that assumes the
     // argument is UTC in (fractional) days (MJD).
     itsFrame.resetEpoch(casacore::Quantity(time, "s"));
diff --git a/ITRFDirection.h b/ITRFDirection.h
index 082000211737a7fe47ab88084ec73e4b75ab0a05..d7d8997f5fcb3bbaab425b5428ff40158ac6a907 100644
--- a/ITRFDirection.h
+++ b/ITRFDirection.h
@@ -61,6 +61,7 @@ private:
 
     mutable casacore::MeasFrame             itsFrame;
     mutable casacore::MDirection::Convert   itsConverter;
+    mutable std::mutex                      itsMutex;
 };
 
 // @}