diff --git a/RTCP/Cobalt/GPUProc/test/SubbandProcs/tCorrelatorStep.cc b/RTCP/Cobalt/GPUProc/test/SubbandProcs/tCorrelatorStep.cc
index 3a3e65f89156e8f57a9ad210a10f05230b50b20e..ec4e25200a73e7334e1417ec006e616a996fdede 100644
--- a/RTCP/Cobalt/GPUProc/test/SubbandProcs/tCorrelatorStep.cc
+++ b/RTCP/Cobalt/GPUProc/test/SubbandProcs/tCorrelatorStep.cc
@@ -20,7 +20,9 @@
 
 #include <lofar_config.h>
 
+#include <CoInterface/BudgetTimer.h>
 #include <GPUProc/cuda/SubbandProcs/CorrelatorStep.h>
+#include <GPUProc/cuda/gpu_wrapper.h>
 
 #include <UnitTest++.h>
 #include <iostream>
@@ -29,8 +31,12 @@
 #include <CoInterface/MultiDimArray.h>
 #include <Common/LofarLogger.h>
 #include <complex>
+#include <boost/format.hpp>
+
+using boost::format;
 
 using namespace LOFAR::Cobalt;
+using namespace LOFAR::Cobalt::gpu;
 
 TEST(convertFlagsToChannelFlags)
 {
@@ -87,10 +93,70 @@ TEST(convertFlagsToChannelFlags)
         150 == flagsPerChanel[0][1].getRanges()[0].end);  //E.
 }
 
+TEST(propagateFlags)
+{
+  /* Test the PERFORMANCE of CorrelatorStep::propagateFlags. */
+
+  const unsigned nrChannels = 256;
+  const unsigned nrSubblocks = 1;
+
+  // Create a parset with the needed parameters
+  Parset parset;
+  parset.add("Cobalt.Correlator.nrChannelsPerSubband",   str(format("%u") % nrChannels));
+  parset.add("Cobalt.Correlator.nrBlocksPerIntegration", str(format("%u") % nrSubblocks));
+  parset.add("Cobalt.blockSize", "196608");
+  
+  parset.add("Observation.VirtualInstrument.stationList", "[80*RS106]"); // Number of names here sets the number of stations.
+  parset.add("Observation.antennaSet", "HBA_ZERO");
+  parset.add("Observation.rspBoardList", "[0]");
+  parset.add("Observation.rspSlotList", "[0]");
+  parset.add("Observation.nrBeams", "1");
+  parset.add("Observation.Beam[0].subbandList", "[0]");
+
+  parset.add("Observation.DataProducts.Output_Correlated.enabled", "true");
+  parset.add("Observation.DataProducts.Output_Correlated.filenames","[L24523_B000_S0_P000_bf.ms]");
+  parset.add("Observation.DataProducts.Output_Correlated.locations","[lse011:/data3/L2011_24523/]");
+
+  parset.updateSettings();
+
+  // All flagged data
+  MultiDimArray<LOFAR::SparseSet<unsigned>, 1> flags(boost::extents[parset.settings.antennaFields.size()]);
+  for (size_t i = 0; i < parset.settings.antennaFields.size(); ++i) {
+    flags[i].include(0, 196608);
+  }
+
+  // Create a default context
+  Device device(0);
+  Context ctx(device);
+
+  // Output data holder
+  SubbandProcOutputData::CorrelatedData correlatedData(nrSubblocks, parset.settings.antennaFields.size(), nrChannels, 65536, ctx);
+
+  const unsigned nrSubbandsPerSubbandProc = 16;
+
+  BudgetTimer processCPUTimer("processCPU", parset.settings.blockDuration() / nrSubbandsPerSubbandProc, true, true);
+
+  processCPUTimer.start();
+  CorrelatorStep::Flagger::propagateFlags(parset, flags, correlatedData);
+  processCPUTimer.stop();
+}
+
 
 int main()
 {
   INIT_LOGGER("tCorrelatorStep");
+
+  try 
+  {
+    Platform pf;
+    LOG_INFO_STR("Detected " << pf.size() << " CUDA devices");
+  } 
+  catch (CUDAException& e) 
+  {
+    LOG_ERROR_STR("Caught exception: " << e.what());
+    return 3;
+  }
+
   return UnitTest::RunAllTests() > 0;
 }