diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h
index 4b769ab981895a9b3ba91406b8a5ee03eea6dc0e..a58d658f0239753b6e2bdc61aaebd33c720779e2 100644
--- a/source/Lib/CommonLib/TypeDef.h
+++ b/source/Lib/CommonLib/TypeDef.h
@@ -51,6 +51,9 @@
 #include <cassert>
 
 //########### place macros to be removed in next cycle below this line ###############
+
+#define JVET_R0388_DBF_CLEANUP                            1 // JVET-R0388: Cleanups on deblocking signalling
+
 #define JVET_R0071_SPS_PPS_CELANUP                        1 // JVET-R0071 item 2-4: cleanups on subpicture signalling (item 1 has been ported in JVET_R0156_ASPECT4)
 
 #define JVET_R0271_SLICE_LEVEL_DQ_SDH_RRC                 1 // JVET-R0271/R0155: Slice level DQ and SDH granularity for mixed lossy/lossless.
diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp
index 697e270d6acd85f78675536178346c36cc4dec2d..5868c228cadb59a8fddaafc7cbe702118266c30f 100644
--- a/source/Lib/DecoderLib/VLCReader.cpp
+++ b/source/Lib/DecoderLib/VLCReader.cpp
@@ -2894,8 +2894,19 @@ void HLSyntaxReader::parsePictureHeader( PicHeader* picHeader, ParameterSetManag
 
     if(picHeader->getDeblockingFilterOverrideFlag())
     {
-      READ_FLAG( uiCode, "ph_deblocking_filter_disabled_flag" );
-      picHeader->setDeblockingFilterDisable(uiCode != 0);
+#if JVET_R0388_DBF_CLEANUP
+      if (!pps->getPPSDeblockingFilterDisabledFlag())
+      {
+#endif
+        READ_FLAG(uiCode, "ph_deblocking_filter_disabled_flag");
+        picHeader->setDeblockingFilterDisable(uiCode != 0);
+#if JVET_R0388_DBF_CLEANUP
+      }
+      else
+      {
+        picHeader->setDeblockingFilterDisable(false);
+      }
+#endif
       if (!picHeader->getDeblockingFilterDisable())
       {
         READ_SVLC( iCode, "ph_beta_offset_div2" );
@@ -3711,7 +3722,18 @@ void HLSyntaxReader::parseSliceHeader (Slice* pcSlice, PicHeader* picHeader, Par
       }
       if(pcSlice->getDeblockingFilterOverrideFlag())
       {
-        READ_FLAG ( uiCode, "slice_deblocking_filter_disabled_flag" );   pcSlice->setDeblockingFilterDisable(uiCode ? 1 : 0);
+#if JVET_R0388_DBF_CLEANUP
+        if (!pps->getPPSDeblockingFilterDisabledFlag())
+        {
+#endif
+          READ_FLAG(uiCode, "slice_deblocking_filter_disabled_flag");   pcSlice->setDeblockingFilterDisable(uiCode ? 1 : 0);
+#if JVET_R0388_DBF_CLEANUP
+        }
+        else
+        {
+          pcSlice->setDeblockingFilterDisable(false);
+        }
+#endif
         if(!pcSlice->getDeblockingFilterDisable())
         {
           READ_SVLC( iCode, "slice_beta_offset_div2" );                     pcSlice->setDeblockingFilterBetaOffsetDiv2( iCode );
diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp
index 4c9474622abf120b5de80a9fbaa0eaeaa21d5ed8..255096fff7a5264764b4f0c03e22137bf2250aff 100644
--- a/source/Lib/EncoderLib/VLCWriter.cpp
+++ b/source/Lib/EncoderLib/VLCWriter.cpp
@@ -1922,7 +1922,14 @@ void HLSWriter::codePictureHeader( PicHeader* picHeader, bool writeRbspTrailingB
 
     if(picHeader->getDeblockingFilterOverrideFlag())
     {
-      WRITE_FLAG( picHeader->getDeblockingFilterDisable(), "ph_deblocking_filter_disabled_flag" );
+#if JVET_R0388_DBF_CLEANUP
+      if (!pps->getPPSDeblockingFilterDisabledFlag())
+      {
+#endif
+        WRITE_FLAG(picHeader->getDeblockingFilterDisable(), "ph_deblocking_filter_disabled_flag");
+#if JVET_R0388_DBF_CLEANUP
+      }
+#endif
       if( !picHeader->getDeblockingFilterDisable() )
       {
         WRITE_SVLC( picHeader->getDeblockingFilterBetaOffsetDiv2(), "ph_beta_offset_div2" );
@@ -2324,7 +2331,14 @@ void HLSWriter::codeSliceHeader         ( Slice* pcSlice )
       }
       if (pcSlice->getDeblockingFilterOverrideFlag())
       {
-        WRITE_FLAG(pcSlice->getDeblockingFilterDisable(), "slice_deblocking_filter_disabled_flag");
+#if JVET_R0388_DBF_CLEANUP
+        if (!pcSlice->getPPS()->getPPSDeblockingFilterDisabledFlag())
+        {
+#endif
+          WRITE_FLAG(pcSlice->getDeblockingFilterDisable(), "slice_deblocking_filter_disabled_flag");
+#if JVET_R0388_DBF_CLEANUP
+        }
+#endif
         if(!pcSlice->getDeblockingFilterDisable())
         {
           WRITE_SVLC (pcSlice->getDeblockingFilterBetaOffsetDiv2(), "slice_beta_offset_div2");