diff --git a/applications/vision/src/main.cpp b/applications/vision/src/main.cpp
index 8d1b46c75208ecba8f0ff6edde83f73e7836e6d0..a2dd5e1c044e0f26c69d0afabc2cf059767f3494 100644
--- a/applications/vision/src/main.cpp
+++ b/applications/vision/src/main.cpp
@@ -201,7 +201,7 @@ static void run(ftl::Configurable *root) {
 
 			// Send any remaining channels...
 			// Note: Ensures these send now, otherwise waits until destructor
-			//fs->flush();
+			fs->flush(Channel::Depth);
 
 			++frames;
 			latency += float(ftl::timer::get_time() - fs->timestamp());
diff --git a/components/streams/src/netstream.cpp b/components/streams/src/netstream.cpp
index 361df1b92cd2421a87b07fca1010620c1c562847..2f2046a18be77dfe7943d59beabc21d365b7a758 100644
--- a/components/streams/src/netstream.cpp
+++ b/components/streams/src/netstream.cpp
@@ -88,6 +88,7 @@ bool Net::post(const ftl::codecs::StreamPacket &spkt, const ftl::codecs::Packet
 				try {
 					// FIXME: This doesn't work for file sources with file relative timestamps...
 					short pre_transmit_latency = short(ftl::timer::get_time() - spkt.timestamp);
+
 					if (!net_->send(client.peerid,
 							uri_,
 							pre_transmit_latency,  // Time since timestamp for tx
diff --git a/components/streams/src/sender.cpp b/components/streams/src/sender.cpp
index c75d2677a3451aff14266dc45921582187becd95..27abc33b46c749d81d3471ed85369a6e95c7a700 100644
--- a/components/streams/src/sender.cpp
+++ b/components/streams/src/sender.cpp
@@ -166,10 +166,12 @@ void Sender::post(ftl::data::FrameSet &fs, ftl::codecs::Channel c) {
 
 	bool do_inject = !do_inject_.test_and_set();
 	if (do_inject) injection_timestamp_ = fs.timestamp();
-	bool do_iframe = injection_timestamp_ == fs.timestamp();
 
 	// Add an iframe at the requested frequency.
 	if (add_iframes_ > 0) iframe_ = (iframe_+1) % add_iframes_;
+	if (iframe_ == 0) injection_timestamp_ = fs.timestamp();
+
+	bool do_iframe = injection_timestamp_ == fs.timestamp();
 
 	FTL_Profile("SenderPost", 0.02);
 
@@ -284,7 +286,7 @@ void Sender::post(ftl::data::FrameSet &fs, ftl::codecs::Channel c) {
 
 	if (needs_encoding) {
 		// TODO: One thread per channel.
-		_encodeChannel(fs, c, do_iframe || iframe_ == 0);
+		_encodeChannel(fs, c, do_iframe);
 	}
 
 	//do_inject_ = false;