diff --git a/components/streams/src/builder.cpp b/components/streams/src/builder.cpp
index 792603c71d9206b213c8935d6d785591ce5bc161..a209a44e6a0a5e095f6cb9448ae625bc2f6a5991 100644
--- a/components/streams/src/builder.cpp
+++ b/components/streams/src/builder.cpp
@@ -5,6 +5,7 @@
 #include <loguru.hpp>
 
 #include <chrono>
+#include <bitset>
 
 using ftl::streams::BaseBuilder;
 using ftl::streams::ForeignBuilder;
@@ -386,7 +387,7 @@ std::shared_ptr<ftl::data::FrameSet> ForeignBuilder::_getFrameset() {
 		f->set(ftl::data::FSFlag::STALE);
 		slk.unlock();
 
-		if (!f->isComplete()) LOG(WARNING) << "Dispatching incomplete frameset: " << f->timestamp();
+		if (!f->isComplete()) LOG(WARNING) << "Dispatching incomplete frameset: " << f->timestamp() << " (" << std::bitset<16>( f->mask ).to_string() << ")";
 
 		// Remove all previous framesets
 		while (framesets_.size() > 0) {
diff --git a/components/streams/src/receiver.cpp b/components/streams/src/receiver.cpp
index 66dc49247ef29a81076c2872d40c6a7548a6336c..efc4ffba2122fd4c9dbec1f346d39d58df923a97 100644
--- a/components/streams/src/receiver.cpp
+++ b/components/streams/src/receiver.cpp
@@ -388,8 +388,8 @@ void Receiver::processPackets(const StreamPacket &spkt, const Packet &pkt) {
 
 			for (auto &frame : fs->frames) {
 				frame.markAvailable(spkt.channel);
-				_finishPacket(fs, frame.source());
 			}
+			_finishPacket(fs, spkt.frame_number);
 		}
 		return;
 	}
diff --git a/components/streams/src/sender.cpp b/components/streams/src/sender.cpp
index 17fc686aed689d4749462372240f0ffe70a2b034..337a86b8845dffe45c71f44fcb7583e48218fd50 100644
--- a/components/streams/src/sender.cpp
+++ b/components/streams/src/sender.cpp
@@ -378,7 +378,7 @@ void Sender::post(ftl::data::Frame &frame, ftl::codecs::Channel c) {
 		spkt.timestamp = frame.timestamp();
 		spkt.localTimestamp = spkt.timestamp;
 		spkt.streamID = frame.frameset();
-		spkt.frame_number = 255;
+		spkt.frame_number = 0;
 		spkt.channel = c;
 
 		Packet pkt;