Index: Lib/TLibCommon/TypeDef.h
===================================================================
--- Lib/TLibCommon/TypeDef.h	(revision 293)
+++ Lib/TLibCommon/TypeDef.h	(working copy)
@@ -47,6 +47,8 @@
 //! \ingroup TLibCommon
 //! \{
 
+#define RM_USELESS_CTX_COPY 1
+
 ///////////////////////////////////////////////////////////
 // KTA tools section start
 ///////////////////////////////////////////////////////////
Index: Lib/TLibEncoder/TEncCu.cpp
===================================================================
--- Lib/TLibEncoder/TEncCu.cpp	(revision 293)
+++ Lib/TLibEncoder/TEncCu.cpp	(working copy)
@@ -2312,7 +2312,9 @@
         }
       }
 #endif
+#if !RM_USELESS_CTX_COPY
       m_pcRDGoOnSbacCoder->store(m_ppppcRDSbacCoder[uiWidthIdx][uiHeightIdx][CI_TEMP_BEST]);
+#endif
 
       if (rpcBestCU->getTotalCost()!=MAX_DOUBLE)
       {
@@ -2468,7 +2470,9 @@
         }
       }
 #endif
+#if !RM_USELESS_CTX_COPY
       m_pcRDGoOnSbacCoder->store(m_ppppcRDSbacCoder[uiWidthIdx][uiHeightIdx][CI_TEMP_BEST]);
+#endif
 
       if (rpcBestCU->getTotalCost()!=MAX_DOUBLE)
       {
@@ -2742,11 +2746,13 @@
         }
       }
 
+#if !RM_USELESS_CTX_COPY
 #if JVET_C0024_QTBT
         m_pcRDGoOnSbacCoder->store(m_ppppcRDSbacCoder[uiWidthIdx][uiHeightIdx][CI_TEMP_BEST]);
 #else
       m_pcRDGoOnSbacCoder->store(m_pppcRDSbacCoder[uiDepth][CI_TEMP_BEST]);
 #endif
+#endif
 
       // If the configuration being tested exceeds the maximum number of bytes for a slice / slice-segment, then
       // a proper RD evaluation cannot be performed. Therefore, termination of the
@@ -4375,11 +4381,13 @@
   setCodeChromaQpAdjFlag( codeChromaQpAdjFlag );
   setdQPFlag( bCodeDQP );
 
+#if !RM_USELESS_CTX_COPY
 #if JVET_C0024_QTBT
   m_pcRDGoOnSbacCoder->store(m_ppppcRDSbacCoder[uiWIdx][uiHIdx][CI_TEMP_BEST]);
 #else
   m_pcRDGoOnSbacCoder->store(m_pppcRDSbacCoder[uiDepth][CI_TEMP_BEST]);
 #endif
+#endif
 
   rpcTempCU->getTotalBits() = m_pcEntropyCoder->getNumberOfWrittenBits();
   rpcTempCU->getTotalBins() = ((TEncBinCABAC *)((TEncSbac*)m_pcEntropyCoder->m_pcEntropyCoderIf)->getEncBinIf())->getBinsCoded();
@@ -4479,11 +4487,13 @@
 #endif
   m_pcEntropyCoder->encodeIPCMInfo ( rpcTempCU, 0, true );
 
+#if !RM_USELESS_CTX_COPY
 #if JVET_C0024_QTBT
   m_pcRDGoOnSbacCoder->store(m_ppppcRDSbacCoder[uiWIdx][uiHIdx][CI_TEMP_BEST]);
 #else
   m_pcRDGoOnSbacCoder->store(m_pppcRDSbacCoder[uiDepth][CI_TEMP_BEST]);
 #endif
+#endif
 
   rpcTempCU->getTotalBits() = m_pcEntropyCoder->getNumberOfWrittenBits();
   rpcTempCU->getTotalBins() = ((TEncBinCABAC *)((TEncSbac*)m_pcEntropyCoder->m_pcEntropyCoderIf)->getEncBinIf())->getBinsCoded();
@@ -4547,11 +4557,19 @@
     pcCU  = NULL;
 
     // store temp best CI for next CU coding
+#if RM_USELESS_CTX_COPY
 #if JVET_C0024_QTBT
+    m_pcRDGoOnSbacCoder->store(m_ppppcRDSbacCoder[uiWIdx][uiHIdx][CI_NEXT_BEST]);
+#else
+    m_pcRDGoOnSbacCoder->store(m_pppcRDSbacCoder[uiDepth][CI_NEXT_BEST]);
+#endif
+#else
+#if JVET_C0024_QTBT
     m_ppppcRDSbacCoder[uiWIdx][uiHIdx][CI_TEMP_BEST]->store(m_ppppcRDSbacCoder[uiWIdx][uiHIdx][CI_NEXT_BEST]);
 #else
     m_pppcRDSbacCoder[uiDepth][CI_TEMP_BEST]->store(m_pppcRDSbacCoder[uiDepth][CI_NEXT_BEST]);
 #endif
+#endif
 
 
 #if DEBUG_STRING
Index: Lib/TLibEncoder/TEncSearch.cpp
===================================================================
--- Lib/TLibEncoder/TEncSearch.cpp	(revision 293)
+++ Lib/TLibEncoder/TEncSearch.cpp	(working copy)
@@ -8128,11 +8128,13 @@
     pcCU->getTotalDistortion() = distortion;
     pcCU->getTotalCost()       = m_pcRdCost->calcRdCost( uiBits, distortion );
 
+#if !RM_USELESS_CTX_COPY
 #if JVET_C0024_QTBT
     m_pcRDGoOnSbacCoder->store(m_ppppcRDSbacCoder[uiWIdx][uiHIdx][CI_TEMP_BEST]);
 #else
     m_pcRDGoOnSbacCoder->store(m_pppcRDSbacCoder[pcCU->getDepth(0)][CI_TEMP_BEST]);
 #endif
+#endif
 
 #if DEBUG_STRING
     pcYuvResiBest->clear(); // Clear the residual image, if we didn't code it.
