diff --git a/source/App/EncoderApp/EncApp.cpp b/source/App/EncoderApp/EncApp.cpp
index e8162268ba5e1cd8aac9cc8f94643fa855238589..8cd66cfbc6b9549cb7e8a038b48c70e17e322f01 100644
--- a/source/App/EncoderApp/EncApp.cpp
+++ b/source/App/EncoderApp/EncApp.cpp
@@ -1188,11 +1188,16 @@ void EncApp::xInitLibCfg( int layerIdx )
   for (int i = 0; i < m_nnPostFilterSEICharacteristicsNumFilters; i++)
   {
     m_cEncLib.setNNPostFilterSEICharacteristicsId                      (m_nnPostFilterSEICharacteristicsId[i], i);
+#if JVET_AD0056_MOVE_NNPFC_BASE_FLAG
+    m_cEncLib.setNNPostFilterSEICharacteristicsBaseFlag                (m_nnPostFilterSEICharacteristicsBaseFlag[i], i);
+#endif
     m_cEncLib.setNNPostFilterSEICharacteristicsModeIdc                 (m_nnPostFilterSEICharacteristicsModeIdc[i], i);
     m_cEncLib.setNNPostFilterSEICharacteristicsPropertyPresentFlag( m_nnPostFilterSEICharacteristicsPropertyPresentFlag[i], i);
     if (m_cEncLib.getNNPostFilterSEICharacteristicsPropertyPresentFlag(i))
     {
+#if !JVET_AD0056_MOVE_NNPFC_BASE_FLAG
       m_cEncLib.setNNPostFilterSEICharacteristicsBaseFlag                (m_nnPostFilterSEICharacteristicsBaseFlag[i], i);
+#endif
       if (!m_nnPostFilterSEICharacteristicsBaseFlag[i])
       {
         bool baseFilterExist = false;
diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h
index 96205a71ecf8875a138f4688e280234d24de1d66..cfc0f32a3b19c6655b00a70cc9a575bc6b1d7c15 100644
--- a/source/Lib/CommonLib/TypeDef.h
+++ b/source/Lib/CommonLib/TypeDef.h
@@ -67,6 +67,8 @@
 
 #define JVET_AD0067_SWAP_SYNTAX                           1 // Swap the two syntax elements: nnpfc_auxiliary_inp_idc and nnpfc_inp_order_idc
 
+#define JVET_AD0056_MOVE_NNPFC_BASE_FLAG                  1
+
 #define JVET_AD0054_NNPFC_ABSENT_INPUT_PIC_ZERO_FLAG      1
 
 #define JVET_AD0141_NNPFA_NONOUTPUTPIC                    1 //Check that NNPFA is present in pic that is not a non-output picture
diff --git a/source/Lib/DecoderLib/SEIread.cpp b/source/Lib/DecoderLib/SEIread.cpp
index a832e3c6d1d695066360ff1661ce38413c913337..97a7217a0ec98667d1d7624703c656a0d90c9426 100644
--- a/source/Lib/DecoderLib/SEIread.cpp
+++ b/source/Lib/DecoderLib/SEIread.cpp
@@ -2785,6 +2785,11 @@ void SEIReader::xParseSEINNPostFilterCharacteristics(SEINeuralNetworkPostFilterC
   sei.m_id = val;
   CHECK((sei.m_id >= 256 && sei.m_id <= 511) || (sei.m_id >= (1<<31) && sei.m_id <= MAX_NNPFC_ID), "Reserved nnpfc_id value, shall ignore the SEI message");
 
+#if JVET_AD0056_MOVE_NNPFC_BASE_FLAG
+  sei_read_flag(pDecodedMessageOutputStream, val, "nnpfc_base_flag");
+  sei.m_baseFlag = val;
+#endif
+
   sei_read_uvlc( pDecodedMessageOutputStream, val, "nnpfc_mode_idc" );
   sei.m_modeIdc = val;
 
@@ -2810,9 +2815,10 @@ void SEIReader::xParseSEINNPostFilterCharacteristics(SEINeuralNetworkPostFilterC
 
   if (sei.m_propertyPresentFlag)
   {
+#if !JVET_AD0056_MOVE_NNPFC_BASE_FLAG
     sei_read_flag(pDecodedMessageOutputStream, val, "nnpfc_base_flag");
     sei.m_baseFlag = val;
-
+#endif
     ChromaFormat chromaFormatIdc = sps->getChromaFormatIdc();
     uint8_t      subWidthC;
     uint8_t      subHeightC;
diff --git a/source/Lib/EncoderLib/SEIEncoder.cpp b/source/Lib/EncoderLib/SEIEncoder.cpp
index 6b7c80a883cf8519ec315fd171e44f9a7c11920b..5d4f931ffc7132abbcc6d947b5f177053fa4b0b8 100644
--- a/source/Lib/EncoderLib/SEIEncoder.cpp
+++ b/source/Lib/EncoderLib/SEIEncoder.cpp
@@ -1307,6 +1307,9 @@ void SEIEncoder::initSEINeuralNetworkPostFilterCharacteristics(SEINeuralNetworkP
   CHECK(!(sei != nullptr), "Unspecified error");
   sei->m_purpose = m_pcCfg->getNNPostFilterSEICharacteristicsPurpose(filterIdx);
   sei->m_id = m_pcCfg->getNNPostFilterSEICharacteristicsId(filterIdx);
+#if JVET_AD0056_MOVE_NNPFC_BASE_FLAG
+  sei->m_baseFlag = m_pcCfg->getNNPostFilterSEICharacteristicsBaseFlag(filterIdx);
+#endif
   sei->m_modeIdc = m_pcCfg->getNNPostFilterSEICharacteristicsModeIdc(filterIdx);
   if (sei->m_modeIdc == POST_FILTER_MODE::URI)
   {
@@ -1316,8 +1319,9 @@ void SEIEncoder::initSEINeuralNetworkPostFilterCharacteristics(SEINeuralNetworkP
   sei->m_propertyPresentFlag = m_pcCfg->getNNPostFilterSEICharacteristicsPropertyPresentFlag(filterIdx);
   if (sei->m_propertyPresentFlag)
   {
+#if !JVET_AD0056_MOVE_NNPFC_BASE_FLAG
     sei->m_baseFlag = m_pcCfg->getNNPostFilterSEICharacteristicsBaseFlag(filterIdx);
-
+#endif
     sei->m_numberInputDecodedPicturesMinus1 = m_pcCfg->getNNPostFilterSEICharacteristicsNumberInputDecodedPicturesMinus1(filterIdx);
     CHECK(sei->m_numberInputDecodedPicturesMinus1 > 63, "m_numberInputDecodedPicturesMinus1 shall be in the range of 0 to 63");
 
diff --git a/source/Lib/EncoderLib/SEIwrite.cpp b/source/Lib/EncoderLib/SEIwrite.cpp
index 3328556e237fdb932a7be216a0caf0705c7c4375..dd09f77721534823cc8a8d2c31b8c0a8cd3d1d48 100644
--- a/source/Lib/EncoderLib/SEIwrite.cpp
+++ b/source/Lib/EncoderLib/SEIwrite.cpp
@@ -1683,6 +1683,9 @@ void SEIWriter::xWriteSEINeuralNetworkPostFilterCharacteristics(const SEINeuralN
 {
   xWriteCode(sei.m_purpose, 16, "nnpfc_purpose");
   xWriteUvlc(sei.m_id, "nnpfc_id");
+#if JVET_AD0056_MOVE_NNPFC_BASE_FLAG
+  xWriteFlag(sei.m_baseFlag, "nnpfc_base_flag");
+#endif
   xWriteUvlc(sei.m_modeIdc, "nnpfc_mode_idc");
   if (sei.m_modeIdc == POST_FILTER_MODE::URI)
   {
@@ -1696,7 +1699,9 @@ void SEIWriter::xWriteSEINeuralNetworkPostFilterCharacteristics(const SEINeuralN
   xWriteFlag(sei.m_propertyPresentFlag, "nnpfc_property_present_flag");
   if (sei.m_propertyPresentFlag)
   {
+#if !JVET_AD0056_MOVE_NNPFC_BASE_FLAG
     xWriteFlag(sei.m_baseFlag, "nnpfc_base_flag");
+#endif
     xWriteUvlc(sei.m_numberInputDecodedPicturesMinus1, "nnpfc_number_of_input_pictures_minus1");
 
 #if JVET_AD0056_NNPFC_INPUT_PIC_OUTPUT_FLAG