diff --git a/ReleaseNotes.md b/ReleaseNotes.md
index 77d32b234698f7a3b32574665a13afe475d9ce45..ddee6bd04fbe738aa745c48ec9cd9ecad20eed5d 100644
--- a/ReleaseNotes.md
+++ b/ReleaseNotes.md
@@ -10,6 +10,7 @@
 
 ## Bug fixes
 - cta/CTA#1092 - Fix overflow error with drive state latestBandwith causing cta frontend crash
+- cta/CTA#501 - Fix disappearing reason when TapeDrive is reading or writing
 
 # v4.4.0-1
 
diff --git a/scheduler/TapeDrivesCatalogueState.cpp b/scheduler/TapeDrivesCatalogueState.cpp
index dcdd6cb9ef61bd9a16c593ca56b8fdf02cc2330e..23f88c6d63c754361affa5b7a32a29ecabc26985 100644
--- a/scheduler/TapeDrivesCatalogueState.cpp
+++ b/scheduler/TapeDrivesCatalogueState.cpp
@@ -276,7 +276,9 @@ void TapeDrivesCatalogueState::setDriveUpOrMaybeDown(common::dataStructures::Tap
   auto targetStatus = common::dataStructures::DriveStatus::Up;
   if (!driveState.desiredUp) {
     driveState.driveStatus = common::dataStructures::DriveStatus::Down;
-    driveState.reasonUpDown = inputs.reason;
+    if (!driveState.reasonUpDown) {
+      driveState.reasonUpDown = inputs.reason;
+    }
   }
   // If we were already up (or down), then we only update the last update time.
   if (driveState.driveStatus == targetStatus) {