diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h
index a3bc155c55aa50840c14b33f417b6365c723a93a..53c17d1ee59ec885380127e5624ba2af743af03b 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 16a26e1459526f26fab1253aa5efc245fd5a1a69..c9b750c0035a57958cbe6474cb02efcefe366ee2 100644
--- a/source/Lib/DecoderLib/VLCReader.cpp
+++ b/source/Lib/DecoderLib/VLCReader.cpp
@@ -1035,9 +1035,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 55c36ff7735566a2dd656e6f326199caedc09852..c1c4db002c36276f03ce7d41edcaec2c5c497707 100644
--- a/source/Lib/EncoderLib/VLCWriter.cpp
+++ b/source/Lib/EncoderLib/VLCWriter.cpp
@@ -708,7 +708,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" );