diff --git a/sdrbase/dsp/dspengine.cpp b/sdrbase/dsp/dspengine.cpp
index 1ed675397..949dfec80 100644
--- a/sdrbase/dsp/dspengine.cpp
+++ b/sdrbase/dsp/dspengine.cpp
@@ -220,7 +220,6 @@ void DSPEngine::work()
 			// feed data to handlers
 			for(SampleSinks::const_iterator it = m_sampleSinks.begin(); it != m_sampleSinks.end(); it++)
 				(*it)->feed(part1begin, part1end, firstOfBurst);
-			firstOfBurst = false;
 		}
 		// second part of FIFO data (used when block wraps around)
 		if(part2begin != part2end) {
@@ -232,8 +231,8 @@ void DSPEngine::work()
 			// feed data to handlers
 			for(SampleSinks::const_iterator it = m_sampleSinks.begin(); it != m_sampleSinks.end(); it++)
 				(*it)->feed(part2begin, part2end, firstOfBurst);
-			firstOfBurst = false;
 		}
+		firstOfBurst = false;
 
 		// adjust FIFO pointers
 		sampleFifo->readCommit(count);
diff --git a/sdrbase/dsp/threadedsamplesink.cpp b/sdrbase/dsp/threadedsamplesink.cpp
index ad157b9ff..dc164b4b4 100644
--- a/sdrbase/dsp/threadedsamplesink.cpp
+++ b/sdrbase/dsp/threadedsamplesink.cpp
@@ -69,15 +69,14 @@ void ThreadedSampleSink::handleData()
 			// handle data
 			if(m_sampleSink != NULL)
 				m_sampleSink->feed(part1begin, part1end, firstOfBurst);
-			firstOfBurst = false;
 		}
 		// second part of FIFO data (used when block wraps around)
 		if(part2begin != part2end) {
 			// handle data
 			if(m_sampleSink != NULL)
-				m_sampleSink->feed(part1begin, part1end, firstOfBurst);
-			firstOfBurst = false;
+				m_sampleSink->feed(part2begin, part2end, firstOfBurst);
 		}
+		firstOfBurst = false;
 
 		// adjust FIFO pointers
 		m_sampleFifo.readCommit(count);