diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h
index a17d20f80c4a2c70170db7c90cf17d73fa382895..6c85490b553e6645bc7367f01c078dc78336fc51 100644
--- a/source/Lib/CommonLib/TypeDef.h
+++ b/source/Lib/CommonLib/TypeDef.h
@@ -94,6 +94,8 @@
 
 #define JVET_N0178_IMPLICIT_BDOF_SPLIT                    1
 
+#define JVET_N0383_N0251_IBC_COL_VPDU_REMOVE              1
+
 #define JCTVC_Y0038_PARAMS                                1
 
 #define JVET_MMVD_OFF_MACRO                               0
diff --git a/source/Lib/CommonLib/UnitTools.cpp b/source/Lib/CommonLib/UnitTools.cpp
index c40e9350ceb8987e98a7bdf64f2dc7e37e89f750..67042018825f7d3e752ab27a56e5b585696a564b 100644
--- a/source/Lib/CommonLib/UnitTools.cpp
+++ b/source/Lib/CommonLib/UnitTools.cpp
@@ -1952,6 +1952,10 @@ bool PU::isBlockVectorValid(PredictionUnit& pu, int xPos, int yPos, int width, i
       const Position refPosCol64x64 = {offset64x, offset64y};
       if (pu.cs->isDecomp(refPosCol64x64, toChannelType(COMPONENT_Y)))
         return false;
+#if JVET_N0383_N0251_IBC_COL_VPDU_REMOVE
+      if (refPosCol64x64 == pu.Y().topLeft())
+        return false;
+#endif
     }
   }
   else