diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h
index 04de41c875df11c5ede678b82888df1f84fa3304..590811c02975aaec2789de4b53a7115a745c2878 100644
--- a/source/Lib/CommonLib/TypeDef.h
+++ b/source/Lib/CommonLib/TypeDef.h
@@ -56,6 +56,10 @@
 #if JVET_M0445_MCTS
 #define JVET_M0445_MCTS_DEC_CHECK                         1 // Check at decoder side the MCTS restrictions
 #endif
+
+#define JVET_M0415_WRAPAROUND_HLS                         1 // HLS for Wrap-around MC
+
+
 #define JCTVC_Y0038_PARAMS                                1
 
 #define JVET_M0600_RATE_CTRL                              1 //frame level bit allocation by qdf
diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp
index 5bcd4e35bb7f4496e55d0976d247efe92ac506ea..dc8b1f81e583caa2b4b2f68a21f14526af6692b1 100644
--- a/source/Lib/DecoderLib/VLCReader.cpp
+++ b/source/Lib/DecoderLib/VLCReader.cpp
@@ -1094,9 +1094,14 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS)
   }
 
   READ_FLAG(uiCode, "sps_ref_wraparound_enabled_flag");                  pcSPS->setWrapAroundEnabledFlag( uiCode ? true : false );
+
   if (pcSPS->getWrapAroundEnabledFlag())
   {
+#if JVET_M0415_WRAPAROUND_HLS
+    READ_UVLC(uiCode, "sps_ref_wraparound_offset_minus1");               pcSPS->setWrapAroundOffset( (uiCode+1)*(1 <<  pcSPS->getLog2MinCodingBlockSize()));
+#else
     READ_UVLC(uiCode, "sps_ref_wraparound_offset");                      pcSPS->setWrapAroundOffset( uiCode );
+#endif
   }
 
   READ_FLAG( uiCode, "sps_temporal_mvp_enabled_flag" );                  pcSPS->setSPSTemporalMVPEnabledFlag(uiCode);
diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp
index 93af6cb2f61d43abb429520b590e70c9b1d58573..f2f806cdb0e30621a22ae91ab1ee07d2d7f8b520 100644
--- a/source/Lib/EncoderLib/VLCWriter.cpp
+++ b/source/Lib/EncoderLib/VLCWriter.cpp
@@ -749,7 +749,11 @@ void HLSWriter::codeSPS( const SPS* pcSPS )
   WRITE_FLAG( pcSPS->getWrapAroundEnabledFlag() ? 1 : 0,                              "sps_ref_wraparound_enabled_flag" );
   if( pcSPS->getWrapAroundEnabledFlag() )
   {
+#if JVET_M0415_WRAPAROUND_HLS
+    WRITE_UVLC( (pcSPS->getWrapAroundOffset()/(1 <<  pcSPS->getLog2MinCodingBlockSize()))-1,  "sps_ref_wraparound_offset_minus1" );
+#else
     WRITE_UVLC( pcSPS->getWrapAroundOffset(),                                        "sps_ref_wraparound_offset" );
+#endif
   }
 
   WRITE_FLAG( pcSPS->getSPSTemporalMVPEnabledFlag()  ? 1 : 0,                        "sps_temporal_mvp_enabled_flag" );