diff --git a/RTCP/Cobalt/OutputProc/src/TBB_Frame.h b/RTCP/Cobalt/OutputProc/src/TBB_Frame.h
index fda504b29d6ce8bb816c99d56a2f3c9e201e1a06..db308a1a0b13157e11a536bbcfa482edb8a08bb3 100644
--- a/RTCP/Cobalt/OutputProc/src/TBB_Frame.h
+++ b/RTCP/Cobalt/OutputProc/src/TBB_Frame.h
@@ -77,11 +77,14 @@ namespace LOFAR
        * In the TBBs, transient samples are packed (2 samples per 3 bytes) with the checksum all the way at the end. This changes on transfer.
        *
        * TBB stores a frame in 2040 bytes (actually, 2048 with preamble and gaps). It sends a frame at a time, so derive our max from it.
+       *
+       * In spectral mode the frame size is only 2012 bytes!
        */
-#define MAX_TBB_DATA_SIZE               (2040 - sizeof(TBB_Header) - sizeof(uint32_t))  // 1948: TBB frame size without header and payload crc32.
+#define MAX_TBB_DATA_SIZE_SPECTRAL_MODE (2012 - sizeof(TBB_Header) - sizeof(uint32_t))
+#define MAX_TBB_DATA_SIZE_TRANSIENT_MODE (2040 - sizeof(TBB_Header) - sizeof(uint32_t))  // 1948: TBB frame size without header and payload crc32.
 
-#define MAX_TBB_TRANSIENT_NSAMPLES      (MAX_TBB_DATA_SIZE / 3 * 2)  // 1298 (.666: 1 byte padding when indeed 1298 samples would ever be stored in TBB)
-#define MAX_TBB_SPECTRAL_NSAMPLES       (MAX_TBB_DATA_SIZE / (2 * sizeof(int16_t)))     // 487
+#define MAX_TBB_TRANSIENT_NSAMPLES      (MAX_TBB_DATA_SIZE_TRANSIENT_MODE / 3 * 2)  // 1298 (.666: 1 byte padding when indeed 1298 samples would ever be stored in TBB)
+#define MAX_TBB_SPECTRAL_NSAMPLES       (MAX_TBB_DATA_SIZE_SPECTRAL_MODE / (2 * sizeof(int16_t)))     // 487
 
       // Unpacked, sign-extended (for transient) samples without padding, i.e. as received.
       // Frames might not be full; the doc says the crc32 is always sent right after (no padding),