diff --git a/source/App/EncoderApp/EncAppCfg.cpp b/source/App/EncoderApp/EncAppCfg.cpp
index 509fd0269f7aa77d6d2d397a64b68c6aaa4af9d4..bf8b618516772faaad666364923cd7052132af0e 100644
--- a/source/App/EncoderApp/EncAppCfg.cpp
+++ b/source/App/EncoderApp/EncAppCfg.cpp
@@ -1964,9 +1964,6 @@ bool EncAppCfg::xCheckParameter()
 #endif
 #if JVET_L0124_L0208_TRIANGLE
     xConfirmPara( m_Triangle, "Triangle is only allowed with NEXT profile" );
-#endif
-#if JVET_L0231_WRAPAROUND
-    xConfirmPara( m_wrapAround, "Horizontal wrap-around motion compensation for inter prediction is only allowed with NEXT profile" );
 #endif
     // ADD_NEW_TOOL : (parameter check) add a check for next tools here
   }
@@ -1990,16 +1987,16 @@ bool EncAppCfg::xCheckParameter()
 #if !REMOVE_MV_ADAPT_PREC 
     xConfirmPara(m_Affine && !m_highPrecisionMv, "Affine is not yet implemented for HighPrecMv off.");
 #endif
+  }
 
 #if JVET_L0231_WRAPAROUND
-    if( m_wrapAround )
-    {
-      xConfirmPara(m_wrapAroundOffset == 0, "Wrap-around offset must be greater than 0");
-      xConfirmPara(m_wrapAroundOffset > m_iSourceWidth, "Wrap-around offset must not be greater than the source picture width");
-      xConfirmPara(m_wrapAroundOffset % SPS::getWinUnitX(m_chromaFormatIDC) != 0, "Wrap-around offset must be an integer multiple of the specified chroma subsampling");
-    }
-#endif
+  if( m_wrapAround )
+  {
+    xConfirmPara( m_wrapAroundOffset == 0, "Wrap-around offset must be greater than 0" );
+    xConfirmPara( m_wrapAroundOffset > m_iSourceWidth, "Wrap-around offset must not be greater than the source picture width" );
+    xConfirmPara( m_wrapAroundOffset % SPS::getWinUnitX(m_chromaFormatIDC) != 0, "Wrap-around offset must be an integer multiple of the specified chroma subsampling" );
   }
+#endif
 
 #if ENABLE_SPLIT_PARALLELISM
   xConfirmPara( m_numSplitThreads < 1, "Number of used threads cannot be smaller than 1" );
diff --git a/source/Lib/CommonLib/InterPrediction.cpp b/source/Lib/CommonLib/InterPrediction.cpp
index 90add37c822e9ceca34c84f5a083069159b4fdef..f52278b9b2a79ca48a9eca59f8810a56462858bf 100644
--- a/source/Lib/CommonLib/InterPrediction.cpp
+++ b/source/Lib/CommonLib/InterPrediction.cpp
@@ -831,7 +831,7 @@ void InterPrediction::xPredAffineBlk( const ComponentID& compID, const Predictio
 
         // clip and scale
 #if JVET_L0231_WRAPAROUND
-        if (sps.getSpsNext().getUseWrapAround())
+        if (sps.getUseWrapAround())
         {
           m_storedMv[h / AFFINE_MIN_BLOCK_SIZE * MVBUFFER_SIZE + w / AFFINE_MIN_BLOCK_SIZE].set(iMvScaleTmpHor, iMvScaleTmpVer);
           Mv tmpMv(iMvScaleTmpHor, iMvScaleTmpVer);
@@ -859,7 +859,7 @@ void InterPrediction::xPredAffineBlk( const ComponentID& compID, const Predictio
           Mv(2, 2));
         curMv.set(curMv.getHor() >> 2, curMv.getVer() >> 2);     
 #if JVET_L0231_WRAPAROUND
-        if (sps.getSpsNext().getUseWrapAround())
+        if (sps.getUseWrapAround())
         {
           clipMv(curMv, Position(pu.Y().x + (w << iScaleX), pu.Y().y + (h << iScaleY)), Size(blockWidth << iScaleX, blockHeight << iScaleY), sps);
         }
@@ -874,7 +874,7 @@ void InterPrediction::xPredAffineBlk( const ComponentID& compID, const Predictio
 
       // clip and scale
 #if JVET_L0231_WRAPAROUND
-      if (sps.getSpsNext().getUseWrapAround())
+      if (sps.getUseWrapAround())
       {
         Mv tmpMv(iMvScaleTmpHor, iMvScaleTmpVer);
         clipMv(tmpMv, Position(pu.Y().x + (w << iScaleX), pu.Y().y + (h << iScaleY)), Size(blockWidth << iScaleX, blockHeight << iScaleY), sps);
diff --git a/source/Lib/CommonLib/Mv.cpp b/source/Lib/CommonLib/Mv.cpp
index d035d61a4a2cccb963182daa0f448289f47c0beb..81e2624079cecff46d78ff0a6212a057fca60d7a 100644
--- a/source/Lib/CommonLib/Mv.cpp
+++ b/source/Lib/CommonLib/Mv.cpp
@@ -85,7 +85,7 @@ void clipMv( Mv& rcMv, const Position& pos,
   int iVerMin = ( -( int ) sps.getMaxCUHeight()   - iOffset - ( int ) pos.y + 1 ) << iMvShift;
 
 #if JVET_L0231_WRAPAROUND
-  if( sps.getSpsNext().getUseWrapAround() )
+  if( sps.getUseWrapAround() )
   {
     int iHorMax = ( sps.getPicWidthInLumaSamples() + sps.getMaxCUWidth() - size.width + iOffset - ( int ) pos.x - 1 ) << iMvShift;
     int iHorMin = ( -( int ) sps.getMaxCUWidth()                                      - iOffset - ( int ) pos.x + 1 ) << iMvShift;
diff --git a/source/Lib/CommonLib/Picture.cpp b/source/Lib/CommonLib/Picture.cpp
index 1ffa0272ce7cd394be2c10ae2075894c5084518c..db251d409570577d676771ba5181ef7d00497d4a 100644
--- a/source/Lib/CommonLib/Picture.cpp
+++ b/source/Lib/CommonLib/Picture.cpp
@@ -1005,9 +1005,9 @@ void Picture::extendPicBorder()
     Pel*  pi = piTxt;
     // do left and right margins
 #if JVET_L0231_WRAPAROUND
-    if (cs->sps->getSpsNext().getUseWrapAround())
+    if (cs->sps->getUseWrapAround())
     {
-      int xoffset = cs->sps->getSpsNext().getWrapAroundOffset() >> getComponentScaleX( compID, cs->area.chromaFormat );
+      int xoffset = cs->sps->getWrapAroundOffset() >> getComponentScaleX( compID, cs->area.chromaFormat );
       for (int y = 0; y < p.height; y++)
       {
         for (int x = 0; x < xmargin; x++ )
diff --git a/source/Lib/CommonLib/Slice.cpp b/source/Lib/CommonLib/Slice.cpp
index 75e0a1c1066ee707f99c521c44361fff27c59589..a96d6a39a37a4820df8d5a3de70a6685fe7ac131 100644
--- a/source/Lib/CommonLib/Slice.cpp
+++ b/source/Lib/CommonLib/Slice.cpp
@@ -1829,10 +1829,6 @@ SPSNext::SPSNext( SPS& sps )
     , m_compositeRefEnabled     ( false )
 #if JVET_L0293_CPR
   , m_CPRMode                   ( 0 )
-#endif
-#if JVET_L0231_WRAPAROUND
-  , m_wrapAround                ( false )
-  , m_wrapAroundOffset          ( 0 )
 #endif
   // ADD_NEW_TOOL : (sps extension) add tool enabling flags here (with "false" as default values)
 {
@@ -1878,6 +1874,10 @@ SPS::SPS()
 , m_vuiParametersPresentFlag  (false)
 , m_vuiParameters             ()
 , m_spsNextExtension          (*this)
+#if JVET_L0231_WRAPAROUND
+, m_useWrapAround             (false)
+, m_wrapAroundOffset          (  0)
+#endif
 {
   for(int ch=0; ch<MAX_NUM_CHANNEL_TYPE; ch++)
   {
diff --git a/source/Lib/CommonLib/Slice.h b/source/Lib/CommonLib/Slice.h
index 142a4273a73e5261525d462b6f1f4daa305459f9..b9d15e7c146f4d847730d6a4518ce39d1b647884 100644
--- a/source/Lib/CommonLib/Slice.h
+++ b/source/Lib/CommonLib/Slice.h
@@ -868,11 +868,6 @@ private:
   unsigned    m_CPRMode;
 #endif
 
-#if JVET_L0231_WRAPAROUND
-  bool        m_wrapAround;
-  unsigned    m_wrapAroundOffset;
-#endif
-
   // ADD_NEW_TOOL : (sps extension) add tool enabling flags and associated parameters here
 
 public:
@@ -994,12 +989,6 @@ public:
 #if JVET_L0293_CPR
   void      setCPRMode            (unsigned CPRMode)                                { m_CPRMode = CPRMode; }
   unsigned  getCPRMode            ()                                      const     { return m_CPRMode; }
-#endif
-#if JVET_L0231_WRAPAROUND
-  void      setUseWrapAround      ( bool b )                                        { m_wrapAround = b; }
-  bool      getUseWrapAround      ()                                      const     { return m_wrapAround; }
-  void      setWrapAroundOffset   ( unsigned offset )                               { m_wrapAroundOffset = offset; }
-  unsigned  getWrapAroundOffset   ()                                      const     { return m_wrapAroundOffset; }
 #endif
   // ADD_NEW_TOOL : (sps extension) add access functions for tool enabling flags and associated parameters here
 
@@ -1086,6 +1075,11 @@ private:
 
   bool              m_useALF;
 
+#if JVET_L0231_WRAPAROUND
+  bool              m_useWrapAround;
+  unsigned          m_wrapAroundOffset;
+#endif
+
 public:
 
   SPS();
@@ -1220,6 +1214,13 @@ public:
 
   bool                    getUseALF() const { return m_useALF; }
   void                    setUseALF( bool b ) { m_useALF = b; }
+
+#if JVET_L0231_WRAPAROUND
+  void                    setUseWrapAround(bool b)                                                        { m_useWrapAround = b;                                                 }
+  bool                    getUseWrapAround() const                                                        { return m_useWrapAround;                                              }
+  void                    setWrapAroundOffset(unsigned offset)                                            { m_wrapAroundOffset = offset;                                         }
+  unsigned                getWrapAroundOffset() const                                                     { return m_wrapAroundOffset;                                           }
+#endif
 };
 
 
diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp
index 067dafb260d0f46b67693079efd926b2e3e69f73..9a478a0a2e73be33785a425e1dadda49244b8f1b 100644
--- a/source/Lib/DecoderLib/VLCReader.cpp
+++ b/source/Lib/DecoderLib/VLCReader.cpp
@@ -930,14 +930,6 @@ void HLSyntaxReader::parseSPSNext( SPSNext& spsNext, const bool usePCM )
     }
   }
 #endif
-
-#if JVET_L0231_WRAPAROUND
-  READ_FLAG( symbol, "ref_wraparound_enabled_flag" );               spsNext.setUseWrapAround( symbol != 0 );
-  if( spsNext.getUseWrapAround() )
-  {
-    READ_UVLC( symbol, "ref_wraparound_offset" );                   spsNext.setWrapAroundOffset( symbol );
-  }
-#endif
   // ADD_NEW_TOOL : (sps extension parser) read tool enabling flags and associated parameters here
 }
 
@@ -1085,6 +1077,14 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS)
     READ_FLAG( uiCode, "pcm_loop_filter_disable_flag" );                 pcSPS->setPCMFilterDisableFlag ( uiCode ? true : false );
   }
 
+#if JVET_L0231_WRAPAROUND
+  READ_FLAG(uiCode, "ref_wraparound_enabled_flag");                 pcSPS->setUseWrapAround( uiCode ? true : false );
+  if (pcSPS->getUseWrapAround())
+  {
+    READ_UVLC(uiCode, "ref_wraparound_offset");                     pcSPS->setWrapAroundOffset( uiCode );
+  }
+#endif
+
   READ_UVLC( uiCode, "num_short_term_ref_pic_sets" );
   CHECK(uiCode > 64, "Invalid code");
   pcSPS->createRPSList(uiCode);
diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp
index a368c7992b3a47858f42ddcbd6bf7d2b27765bd0..ae3bb7b2412241e413e21ee4b5e302903cb51f04 100644
--- a/source/Lib/EncoderLib/EncLib.cpp
+++ b/source/Lib/EncoderLib/EncLib.cpp
@@ -884,8 +884,8 @@ void EncLib::xInitSPS(SPS &sps)
 #endif 
 
 #if JVET_L0231_WRAPAROUND
-  sps.getSpsNext().setUseWrapAround         ( m_wrapAround );
-  sps.getSpsNext().setWrapAroundOffset      ( m_wrapAroundOffset );
+  sps.setUseWrapAround                      ( m_wrapAround );
+  sps.setWrapAroundOffset                   ( m_wrapAroundOffset );
 #endif
   // ADD_NEW_TOOL : (encoder lib) set tool enabling flags and associated parameters here
 
diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp
index 6edd3181fc9aaf01e705c0d2c34fd6e4792fde00..3b7762af3e85cee8eafe6b53de36b6e585c0ee0f 100644
--- a/source/Lib/EncoderLib/VLCWriter.cpp
+++ b/source/Lib/EncoderLib/VLCWriter.cpp
@@ -640,14 +640,6 @@ void HLSWriter::codeSPSNext( const SPSNext& spsNext, const bool usePCM )
     }
   }
 #endif
-
-#if JVET_L0231_WRAPAROUND
-  WRITE_FLAG( spsNext.getUseWrapAround() ? 1 : 0,                                               "ref_wraparound_enabled_flag" );
-  if( spsNext.getUseWrapAround() )
-  {
-    WRITE_UVLC( spsNext.getWrapAroundOffset(),                                                  "ref_wraparound_offset" );
-  }
-#endif
   // ADD_NEW_TOOL : (sps extension writer) write tool enabling flags and associated parameters here
 }
 
@@ -740,6 +732,14 @@ void HLSWriter::codeSPS( const SPS* pcSPS )
     WRITE_FLAG( pcSPS->getPCMFilterDisableFlag()?1 : 0,                              "pcm_loop_filter_disable_flag");
   }
 
+#if JVET_L0231_WRAPAROUND
+  WRITE_FLAG( pcSPS->getUseWrapAround() ? 1 : 0,                                     "ref_wraparound_enabled_flag" );
+  if( pcSPS->getUseWrapAround() )
+  {
+    WRITE_UVLC( pcSPS->getWrapAroundOffset(),                                        "ref_wraparound_offset" );
+  }
+#endif
+
   CHECK( pcSPS->getMaxTLayers() == 0, "Maximum number of T-layers is '0'" );
 
   const RPSList* rpsList = pcSPS->getRPSList();