diff --git a/src/MessageParser.cpp b/src/MessageParser.cpp
index e7d9544ae60c0762b5e801a443640bac012106c7..fe5931c8675c3d11dc0aec0b51ce41fb26fc9ac1 100644
--- a/src/MessageParser.cpp
+++ b/src/MessageParser.cpp
@@ -213,7 +213,7 @@ String<CCSDSMaxMessageSize> MessageParser::compose(const Message& message) {
 	packetId |= (1U << 11U);                                              // Secondary header flag
 	packetId |= (message.packetType == Message::TC) ? (1U << 12U) : (0U); // Ignore-MISRA
 	uint16_t packetSequenceControl = message.packetSequenceCount | (3U << 14U);
-	uint16_t packetDataLength = ecssMessage.size();
+	uint16_t packetDataLength = ecssMessage.size() - 1;
 
 	// Compile the header
 	header[0] = packetId >> 8U;
diff --git a/test/MessageParserTests.cpp b/test/MessageParserTests.cpp
index 9d8eb910fe22c1377fd0050891d612c5b135cca5..4ec0f8ff790a03d5afe4d8b94c072d435eebfcb7 100644
--- a/test/MessageParserTests.cpp
+++ b/test/MessageParserTests.cpp
@@ -19,7 +19,7 @@ TEST_CASE("TC message parsing", "[MessageParser]") {
 }
 
 TEST_CASE("TC Message parsing into a string", "[MessageParser]") {
-	uint8_t wantedPacket[] = {0x18, 0x07, 0xe0, 0x07, 0x00, 0x0a, 0x20, 0x81,
+	uint8_t wantedPacket[] = {0x18, 0x07, 0xe0, 0x07, 0x00, 0x09, 0x20, 0x81,
 	                          0x1f, 0x00, 0x07, 0x68, 0x65, 0x6c, 0x6c, 0x6f};
 
 	Message message;
@@ -75,7 +75,7 @@ TEST_CASE("TM message parsing", "[MessageParser]") {
 }
 
 TEST_CASE("TM Message parsing into a string", "[MessageParser]") {
-	uint8_t wantedPacket[] = {0x08, 0x02, 0xc0, 0x4d, 0x00, 0x12, 0x20, 0x16,
+	uint8_t wantedPacket[] = {0x08, 0x02, 0xc0, 0x4d, 0x00, 0x11, 0x20, 0x16,
 	                          0x11,0x00, 0x00,0x00, 0x02,0x00, 0x00,0x00,
 	                          0x00, 0x68,0x65, 0x6c, 0x6c, 0x6f, 0x68, 0x69};
 	//save time