diff --git a/source/App/EncoderApp/EncAppCfg.cpp b/source/App/EncoderApp/EncAppCfg.cpp
index 087269d5..6cbd1f1c 100644
--- a/source/App/EncoderApp/EncAppCfg.cpp
+++ b/source/App/EncoderApp/EncAppCfg.cpp
@@ -2829,6 +2829,7 @@ bool EncAppCfg::xCheckParameter()
   }
   xConfirmPara( m_log2MaxTbSize > 6, "Log2MaxTbSize must be 6 or smaller." );
   xConfirmPara( m_log2MaxTbSize < 5,  "Log2MaxTbSize must be 5 or greater." );
+  xConfirmPara( m_log2MaxTbSize > 5 && m_uiCTUSize < 64, "When CTUSize is 32, Log2MaxTbSize shall be 5." );
   xConfirmPara( m_maxNumMergeCand < 1,  "MaxNumMergeCand must be 1 or greater.");
   xConfirmPara( m_maxNumMergeCand > MRG_MAX_NUM_CANDS, "MaxNumMergeCand must be no more than MRG_MAX_NUM_CANDS." );
 #if !JVET_Q0806
diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp
index 519c336b..027a0580 100644
--- a/source/Lib/DecoderLib/VLCReader.cpp
+++ b/source/Lib/DecoderLib/VLCReader.cpp
@@ -2046,6 +2046,7 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS)
 
 
   READ_FLAG( uiCode, "sps_max_luma_transform_size_64_flag");        pcSPS->setLog2MaxTbSize( (uiCode ? 1 : 0) + 5 );
+  CHECK(pcSPS->getCTUSize() < 64 && uiCode != 0, "When CtbSizeY is less than 64, the value of sps_max_luma_transform_size_64_flag shall be equal to 0");
 
 #if JVET_Q0147_JCCR_SIGNALLING
 #if JVET_Q0265
diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp
index 303455d5..9b046211 100644
--- a/source/Lib/EncoderLib/VLCWriter.cpp
+++ b/source/Lib/EncoderLib/VLCWriter.cpp
@@ -1302,6 +1302,7 @@ void HLSWriter::codeSPS( const SPS* pcSPS )
     }
   }
 
+  CHECK(pcSPS->getCTUSize() < 64 && pcSPS->getLog2MaxTbSize() > 5, "When CtbSizeY is less than 64, the value of sps_max_luma_transform_size_64_flag shall be equal to 0");
   WRITE_FLAG( (pcSPS->getLog2MaxTbSize() - 5) ? 1 : 0,                       "sps_max_luma_transform_size_64_flag" );
 
 #if JVET_Q0147_JCCR_SIGNALLING
