diff --git a/applications/gui2/src/modules/camera.cpp b/applications/gui2/src/modules/camera.cpp
index aec6695fdaa9aaf429681437e165a7f191fa8193..a47d35f1a8fbfb28410add25b5b5140ecd8d28e9 100644
--- a/applications/gui2/src/modules/camera.cpp
+++ b/applications/gui2/src/modules/camera.cpp
@@ -39,7 +39,7 @@ void Camera::update(double delta) {
 
 		auto *mod = screen->getModule<ftl::gui2::Statistics>();
 		mod->getJSON(StatisticsPanel::PERFORMANCE_INFO)["FPS"] = n/diff;
-		mod->getJSON(StatisticsPanel::PERFORMANCE_INFO)["Latency"] = l;
+		mod->getJSON(StatisticsPanel::PERFORMANCE_INFO)["Latency"] = std::to_string(int(l))+std::string("ms");
 		if (live_) mod->getJSON(StatisticsPanel::MEDIA_STATUS)["LIVE"] = nlohmann::json{{"icon", ENTYPO_ICON_VIDEO_CAMERA},{"value", true},{"colour","#0000FF"},{"size",28}};
 
 		auto ptr = std::atomic_load(&latest_);
diff --git a/components/streams/src/receiver.cpp b/components/streams/src/receiver.cpp
index 8b59bf6ed1676486d4aa0435e1e3b4fdcd4e7f37..35b6675f7d2aa1959ca91c350c7cd496c02e7208 100644
--- a/components/streams/src/receiver.cpp
+++ b/components/streams/src/receiver.cpp
@@ -209,9 +209,10 @@ void Receiver::_processData(const StreamPacket &spkt, const Packet &pkt) {
 		//UNIQUE_LOCK(vidstate.mutex, lk);
 		timestamp_ = spkt.timestamp;
 		fs->completed(spkt.frame_number);
-		fs->localTimestamp = spkt.localTimestamp;
 	}
 
+	fs->localTimestamp = spkt.localTimestamp;
+
 	/*const auto *cs = stream_;
 	const auto sel = stream_->selected(spkt.frameSetID()) & cs->available(spkt.frameSetID());
 
@@ -259,9 +260,10 @@ void Receiver::_processAudio(const StreamPacket &spkt, const Packet &pkt) {
 		//UNIQUE_LOCK(vidstate.mutex, lk);
 		timestamp_ = spkt.timestamp;
 		fs->completed(spkt.frame_number);
-		fs->localTimestamp = spkt.localTimestamp;
 	}
 
+	fs->localTimestamp = spkt.localTimestamp;
+
 	// Generate settings from packet data
 	/*ftl::audio::AudioSettings settings;
 	settings.channels = (spkt.channel == Channel::AudioStereo) ? 2 : 1;
@@ -437,9 +439,10 @@ void Receiver::_processVideo(const StreamPacket &spkt, const Packet &pkt) {
 			UNIQUE_LOCK(vidstate.mutex, lk);
 			timestamp_ = spkt.timestamp;
 			fs->completed(spkt.frame_number+i);
-			fs->localTimestamp = spkt.localTimestamp;
 		}
 	}
+
+	fs->localTimestamp = spkt.localTimestamp;
 }
 
 void Receiver::processPackets(const StreamPacket &spkt, const Packet &pkt) {
@@ -461,7 +464,6 @@ void Receiver::processPackets(const StreamPacket &spkt, const Packet &pkt) {
 					//UNIQUE_LOCK(vidstate.mutex, lk);  // FIXME: Should have a lock here...
 					timestamp_ = spkt.timestamp;
 					fs->completed(frame.source());
-					fs->localTimestamp = spkt.localTimestamp;
 				}
 
 				//if (frame.availableAll(sel)) {
@@ -469,6 +471,8 @@ void Receiver::processPackets(const StreamPacket &spkt, const Packet &pkt) {
 				//	fs->completed(frame.source());
 				//}
 			}
+
+			fs->localTimestamp = spkt.localTimestamp;
 		}
 		return;
 	}