diff --git a/cfg/sei_vui/neural_network_post_filter_characteristics.cfg b/cfg/sei_vui/neural_network_post_filter_characteristics.cfg
index 73899f5b8da8bed109ad2a0e5a552db819b23223..2d724232c28ae69d5495e4de91e37b6fe1755f51 100644
--- a/cfg/sei_vui/neural_network_post_filter_characteristics.cfg
+++ b/cfg/sei_vui/neural_network_post_filter_characteristics.cfg
@@ -15,6 +15,7 @@ SEINNPFCInpTensorBitDepthLumaMinusEight0:    2
 SEINNPFCInpTensorBitDepthChromaMinusEight0:  2
 SEINNPFCAuxInpIdc0:                      1
 SEINNPFCSepColDescriptionFlag0:          0
+SEINNPFCFullRangeFlag0:                  0
 SEINNPFCColPrimaries0:                   9
 SEINNPFCTransCharacteristics0:           16
 SEINNPFCMatrixCoeffs0:                   14
diff --git a/doc/software-manual.tex b/doc/software-manual.tex
index 0393dc40609aba215eb2544f83c9106c0dce8e8f..66245553ee15d952de606c44f04be39c4c7c1e7d 100644
--- a/doc/software-manual.tex
+++ b/doc/software-manual.tex
@@ -5831,6 +5831,12 @@ Specifies sii_num_units_in_shutter_interval for single entry.If multiple entries
   \par
     When false the syntax elements nnpfc_colour_primaries, nnpfc_transfer_chracteristics, and nnpfc_matrix_coeffs are assumed to be the same as the input to the filter.
   \\
+  \Option{SEINNPFCFullRangeFlag\emph{i}} & 
+  \Default{false} &
+  Specifies scaling and offset values applied in association with the matrix coefficients as specified by nnpfc_matrix_coeff.
+  \par
+    Semantics of nnpfc_full_range_flag are as specified for the VideoFullRangeFlag parameter in Rec. ITU-T H.273 | ISO/IEC 23091-2
+  \\
   \Option{SEINNPFCColPrimaries\emph{i}} &
   \Default{0} &
   Specifies the colour primaries of the picture resulting from applying the neural-network post-filter specified in the SEI message, rather than the colour primaries used for the CLVS.
diff --git a/source/App/EncoderApp/EncApp.cpp b/source/App/EncoderApp/EncApp.cpp
index eba3348e83fc90a1d87641631e14d7ff0606ce1b..c224be31c397a697a81ee089be3a583bf34c467c 100644
--- a/source/App/EncoderApp/EncApp.cpp
+++ b/source/App/EncoderApp/EncApp.cpp
@@ -1306,6 +1306,12 @@ void EncApp::xInitLibCfg( int layerIdx )
       m_cEncLib.setNNPostFilterSEICharacteristicsTransCharacteristics  (m_nnPostFilterSEICharacteristicsTransCharacteristics[i],i);
       m_cEncLib.setNNPostFilterSEICharacteristicsMatrixCoeffs          (m_nnPostFilterSEICharacteristicsMatrixCoeffs[i],i);
     }
+#if JVET_AD0067_INCLUDE_SYNTAX
+    if (m_cEncLib.getNNPostFilterSEICharacteristicsSepColDescriptionFlag(i) && (m_cEncLib.getNNPostFilterSEICharacteristicsOutFormatIdc(i)==1))
+    {
+      m_cEncLib.setNNPostFilterSEICharacteristicsFullRangeFlag         (m_nnPostFilterSEICharacteristicsFullRangeFlag[i],i);
+    }
+#endif
   }
   m_cEncLib.setNnPostFilterSEIActivationEnabled                  (m_nnPostFilterSEIActivationEnabled);
   m_cEncLib.setNnPostFilterSEIActivationTargetId(m_nnPostFilterSEIActivationTargetId);
diff --git a/source/App/EncoderApp/EncAppCfg.cpp b/source/App/EncoderApp/EncAppCfg.cpp
index 5588fe327c897f7850e7ebec702755a8a8e9d393..ce3a81427613317fe6fd9e3f660246d2f5fb4a13 100644
--- a/source/App/EncoderApp/EncAppCfg.cpp
+++ b/source/App/EncoderApp/EncAppCfg.cpp
@@ -1845,6 +1845,12 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
     sepColDescriptionFlag << "SEINNPFCSepColDescriptionFlag" << i;
     opts.addOptions()(sepColDescriptionFlag.str(), m_nnPostFilterSEICharacteristicsSepColDescriptionFlag[i], false, "Specifies the presence of seperate color descriptions in the Nueral Network Post Filter Characteristics SEI message");
 
+#if JVET_AD0067_INCLUDE_SYNTAX
+    std::ostringstream fullRangeFlag;
+    fullRangeFlag << "SEINNPFCFullRangeFlag" << i;
+    opts.addOptions()(fullRangeFlag.str(), m_nnPostFilterSEICharacteristicsFullRangeFlag[i], false, "Specifies scaling and offset values applied in association with the matrix coefficients as specified by nnpfc_matrix_coeff.");
+#endif
+  
     std::ostringstream colPrimaries;
     colPrimaries << "SEINNPFCColPrimaries" << i;
     opts.addOptions()(colPrimaries.str(), m_nnPostFilterSEICharacteristicsColPrimaries[i], 0u, "Specifies color primaries in the Nueral Network Post Filter Characteristics SEI message");
diff --git a/source/App/EncoderApp/EncAppCfg.h b/source/App/EncoderApp/EncAppCfg.h
index 7978a59b2082b6e4cf43f57d6718bbae4b96d0b4..f9d5c700b63d4623e678cf7c0afd957f70d69750 100644
--- a/source/App/EncoderApp/EncAppCfg.h
+++ b/source/App/EncoderApp/EncAppCfg.h
@@ -754,6 +754,9 @@ protected:
   uint32_t              m_nnPostFilterSEICharacteristicsInpFormatIdc[MAX_NUM_NN_POST_FILTERS];
   uint32_t              m_nnPostFilterSEICharacteristicsAuxInpIdc[MAX_NUM_NN_POST_FILTERS];
   bool                  m_nnPostFilterSEICharacteristicsSepColDescriptionFlag[MAX_NUM_NN_POST_FILTERS];
+#if JVET_AD0067_INCLUDE_SYNTAX
+  bool                  m_nnPostFilterSEICharacteristicsFullRangeFlag[MAX_NUM_NN_POST_FILTERS];
+#endif
   uint32_t              m_nnPostFilterSEICharacteristicsColPrimaries[MAX_NUM_NN_POST_FILTERS];
   uint32_t              m_nnPostFilterSEICharacteristicsTransCharacteristics[MAX_NUM_NN_POST_FILTERS];
   uint32_t              m_nnPostFilterSEICharacteristicsMatrixCoeffs[MAX_NUM_NN_POST_FILTERS];
diff --git a/source/Lib/CommonLib/SEI.cpp b/source/Lib/CommonLib/SEI.cpp
index 8bcc8c709ac9e99feadc9c9dbbd365791e02f2e6..8ffabba64e2f84112de78fa9344ec4b6ef13398a 100644
--- a/source/Lib/CommonLib/SEI.cpp
+++ b/source/Lib/CommonLib/SEI.cpp
@@ -1089,6 +1089,9 @@ SEINeuralNetworkPostFilterCharacteristics::SEINeuralNetworkPostFilterCharacteris
   m_inpFormatIdc = sei.m_inpFormatIdc;
   m_auxInpIdc = sei.m_auxInpIdc;
   m_sepColDescriptionFlag = sei.m_sepColDescriptionFlag;
+#if JVET_AD0067_INCLUDE_SYNTAX
+  m_fullRangeFlag = sei.m_fullRangeFlag;
+#endif
   m_colPrimaries = sei.m_colPrimaries;
   m_transCharacteristics = sei.m_transCharacteristics;
   m_matrixCoeffs = sei.m_matrixCoeffs;
diff --git a/source/Lib/CommonLib/SEI.h b/source/Lib/CommonLib/SEI.h
index f79e51cc56ebb4c37e5bf470ddb71bf5827f6bdd..f269f2ade58fa7570cc868c2e7068898551d82c4 100644
--- a/source/Lib/CommonLib/SEI.h
+++ b/source/Lib/CommonLib/SEI.h
@@ -1231,6 +1231,9 @@ public:
     , m_inpFormatIdc(0)
     , m_auxInpIdc(0)
     , m_sepColDescriptionFlag(false)
+#if JVET_AD0067_INCLUDE_SYNTAX
+    , m_fullRangeFlag(false)
+#endif
     , m_colPrimaries(0)
     , m_transCharacteristics(0)
     , m_matrixCoeffs(0)
@@ -1293,6 +1296,9 @@ public:
   uint32_t       m_inpFormatIdc;
   uint32_t m_auxInpIdc;
   bool     m_sepColDescriptionFlag;
+#if JVET_AD0067_INCLUDE_SYNTAX
+  bool           m_fullRangeFlag;
+#endif
   uint8_t  m_colPrimaries;
   uint8_t  m_transCharacteristics;
   uint8_t  m_matrixCoeffs;
diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h
index 733ce5e8b81b0e7d50f7efba9b8a9500b80e4744..4af8cbcab2f6e1bb96d85019b025395b2c16f737 100644
--- a/source/Lib/CommonLib/TypeDef.h
+++ b/source/Lib/CommonLib/TypeDef.h
@@ -88,6 +88,8 @@
 
 #define APPLY_SBT_SL_ON_MTS                               1 // apply save & load fast algorithm on inter MTS when SBT is on
 
+#define JVET_AD0067_INCLUDE_SYNTAX                        1 // include nnpfc_full_range_flag syntax element in the nnpfc sei message when nnpfc_separate_colour_description_present_flag is equal to 1 and when nnpfc_out_format_idc is equal to 1.
+
 #define REUSE_CU_RESULTS                                  1
 #if REUSE_CU_RESULTS
 #define REUSE_CU_RESULTS_WITH_MULTIPLE_TUS                1
diff --git a/source/Lib/DecoderLib/SEIread.cpp b/source/Lib/DecoderLib/SEIread.cpp
index 6aef1c7dbab60edd896161c3d58161c73f7c0374..a832e3c6d1d695066360ff1661ce38413c913337 100644
--- a/source/Lib/DecoderLib/SEIread.cpp
+++ b/source/Lib/DecoderLib/SEIread.cpp
@@ -2999,7 +2999,14 @@ void SEIReader::xParseSEINNPostFilterCharacteristics(SEINeuralNetworkPostFilterC
       sei_read_uvlc(pDecodedMessageOutputStream, val, "nnpfc_out_tensor_bitdepth_chroma_minus8");
       sei.m_outTensorBitDepthChromaMinus8 = val; 
     }
-
+    
+#if JVET_AD0067_INCLUDE_SYNTAX
+    if (sei.m_sepColDescriptionFlag & (sei.m_outFormatIdc == 1))
+    {
+      sei_read_flag(pDecodedMessageOutputStream, val, "nnpfc_full_range_flag");
+      sei.m_fullRangeFlag = val;
+    }
+#endif
     sei_read_uvlc(pDecodedMessageOutputStream, val, "nnpfc_out_order_idc");
     sei.m_outOrderIdc = val;
     CHECK(((sei.m_purpose & NNPC_PurposeType::CHROMA_UPSAMPLING) != 0)  && (sei.m_outOrderIdc == 3), "When nnpfc_purpose & 0x02 is not equal to 0, nnpfc_out_order_idc shall not be equal to 3.")
diff --git a/source/Lib/EncoderLib/EncCfg.h b/source/Lib/EncoderLib/EncCfg.h
index 43219de878aed0fe087680dd79bdce5d3a315abe..39a524f539542e98d9bb0e851070135a01af1263 100644
--- a/source/Lib/EncoderLib/EncCfg.h
+++ b/source/Lib/EncoderLib/EncCfg.h
@@ -719,6 +719,9 @@ protected:
   uint32_t                m_nnPostFilterSEICharacteristicsInpFormatIdc[MAX_NUM_NN_POST_FILTERS];
   uint32_t                m_nnPostFilterSEICharacteristicsAuxInpIdc[MAX_NUM_NN_POST_FILTERS];
   bool                    m_nnPostFilterSEICharacteristicsSepColDescriptionFlag[MAX_NUM_NN_POST_FILTERS];
+#if JVET_AD0067_INCLUDE_SYNTAX
+  bool                    m_nnPostFilterSEICharacteristicsFullRangeFlag[MAX_NUM_NN_POST_FILTERS];
+#endif
   uint32_t                m_nnPostFilterSEICharacteristicsColPrimaries[MAX_NUM_NN_POST_FILTERS];
   uint32_t                m_nnPostFilterSEICharacteristicsTransCharacteristics[MAX_NUM_NN_POST_FILTERS];
   uint32_t                m_nnPostFilterSEICharacteristicsMatrixCoeffs[MAX_NUM_NN_POST_FILTERS];
@@ -1979,6 +1982,16 @@ public:
   {
     return m_nnPostFilterSEICharacteristicsSepColDescriptionFlag[filterIdx];
   }
+#if JVET_AD0067_INCLUDE_SYNTAX
+  void setNNPostFilterSEICharacteristicsFullRangeFlag(bool fullRangeFlag, int filterIdx)
+  {
+    m_nnPostFilterSEICharacteristicsFullRangeFlag[filterIdx] = fullRangeFlag;
+  }
+  bool getNNPostFilterSEICharacteristicsFullRangeFlag(int filterIdx) const
+  {
+    return m_nnPostFilterSEICharacteristicsFullRangeFlag[filterIdx];
+  }
+#endif
   void        setNNPostFilterSEICharacteristicsColPrimaries(uint32_t colPrimaries, int filterIdx)                       { m_nnPostFilterSEICharacteristicsColPrimaries[filterIdx] = colPrimaries; }
   uint32_t    getNNPostFilterSEICharacteristicsColPrimaries(int filterIdx) const                                        { return m_nnPostFilterSEICharacteristicsColPrimaries[filterIdx]; }
   void        setNNPostFilterSEICharacteristicsTransCharacteristics(uint32_t transCharacteristics, int filterIdx)       { m_nnPostFilterSEICharacteristicsTransCharacteristics[filterIdx] = transCharacteristics; }
diff --git a/source/Lib/EncoderLib/SEIEncoder.cpp b/source/Lib/EncoderLib/SEIEncoder.cpp
index 0adddea18f2e3792b3399ddad614d0c20e7357f8..5e86e449c4386d19c6b3cbb8e8bfb98390c717e9 100644
--- a/source/Lib/EncoderLib/SEIEncoder.cpp
+++ b/source/Lib/EncoderLib/SEIEncoder.cpp
@@ -1420,6 +1420,12 @@ void SEIEncoder::initSEINeuralNetworkPostFilterCharacteristics(SEINeuralNetworkP
       sei->m_outTensorBitDepthLumaMinus8 = m_pcCfg->getNNPostFilterSEICharacteristicsOutTensorBitDepthLumaMinus8(filterIdx);
       sei->m_outTensorBitDepthChromaMinus8 = m_pcCfg->getNNPostFilterSEICharacteristicsOutTensorBitDepthChromaMinus8(filterIdx);
     }
+#if JVET_AD0067_INCLUDE_SYNTAX
+    if (sei->m_sepColDescriptionFlag && (sei->m_outFormatIdc == 1))
+    {
+      sei->m_fullRangeFlag = m_pcCfg->getNNPostFilterSEICharacteristicsFullRangeFlag(filterIdx);
+    }
+#endif
     sei->m_outOrderIdc = m_pcCfg->getNNPostFilterSEICharacteristicsOutOrderIdc(filterIdx);
     sei->m_constantPatchSizeFlag = m_pcCfg->getNNPostFilterSEICharacteristicsConstantPatchSizeFlag(filterIdx);
     sei->m_patchWidthMinus1 = m_pcCfg->getNNPostFilterSEICharacteristicsPatchWidthMinus1(filterIdx);
diff --git a/source/Lib/EncoderLib/SEIwrite.cpp b/source/Lib/EncoderLib/SEIwrite.cpp
index d99a802eac7f6aed66d7da64a2b807474d67b818..3328556e237fdb932a7be216a0caf0705c7c4375 100644
--- a/source/Lib/EncoderLib/SEIwrite.cpp
+++ b/source/Lib/EncoderLib/SEIwrite.cpp
@@ -1775,6 +1775,12 @@ void SEIWriter::xWriteSEINeuralNetworkPostFilterCharacteristics(const SEINeuralN
       xWriteUvlc(sei.m_outTensorBitDepthLumaMinus8, "nnpfc_out_tensor_bitdepth_luma_minus8");
       xWriteUvlc(sei.m_outTensorBitDepthChromaMinus8, "nnpfc_out_tensor_bitdepth_chroma_minus8");
     }
+#if JVET_AD0067_INCLUDE_SYNTAX
+    if (sei.m_sepColDescriptionFlag && (sei.m_outFormatIdc == 1))
+    {
+      xWriteFlag(sei.m_fullRangeFlag, "nnpfc_full_range_flag");
+    }
+#endif
 
     xWriteUvlc(sei.m_outOrderIdc, "nnpfc_out_order_idc");
     xWriteUvlc(sei.m_overlap, "nnpfc_overlap");