diff --git a/source/Lib/CommonLib/Slice.cpp b/source/Lib/CommonLib/Slice.cpp
index 44c25f9a587c13d7a6052492451e4e91abb74159..70e8cc32f8a04efeaf78598bac09b9750f88a804 100644
--- a/source/Lib/CommonLib/Slice.cpp
+++ b/source/Lib/CommonLib/Slice.cpp
@@ -99,6 +99,9 @@ Slice::Slice()
 , m_pcPicHeader                   ( NULL )
 , m_colFromL0Flag                 ( true )
 , m_colRefIdx                     ( 0 )
+#if JVET_AA0093_DIVERSITY_CRITERION_FOR_ARMC
+, m_costForARMC                   ( MAX_UINT )
+#endif
 #if INTER_LIC
 , m_UseLIC                        ( false )
 #endif
@@ -184,6 +187,9 @@ void Slice::initSlice()
   m_colourPlaneId = 0;
 #endif
   m_colRefIdx = 0;
+#if JVET_AA0093_DIVERSITY_CRITERION_FOR_ARMC
+  m_costForARMC = MAX_UINT;
+#endif
   m_lmcsEnabledFlag = 0;
   m_explicitScalingListUsed = 0;
   initEqualRef();
diff --git a/source/Lib/DecoderLib/DecCu.cpp b/source/Lib/DecoderLib/DecCu.cpp
index c12ece7c450269dfa6b4f95323e091b86885f926..dc3afe71d5ce453dc02432fa6863b36eab44a20e 100644
--- a/source/Lib/DecoderLib/DecCu.cpp
+++ b/source/Lib/DecoderLib/DecCu.cpp
@@ -1974,13 +1974,23 @@ void DecCu::xDeriveCUMV( CodingUnit &cu )
             if (pu.ibcMbvdMergeFlag)
             {
               int fPosIBCBaseIdx = pu.ibcMbvdMergeIdx / IBC_MBVD_MAX_REFINE_NUM;
-              PU::getIBCMergeCandidates(pu, mrgCtx);
 #if JVET_Y0058_IBC_LIST_MODIFY && JVET_W0090_ARMC_TM
+              if (pu.cs->sps->getUseAML())
+              {
 #if JVET_Z0075_IBC_HMVP_ENLARGE
-              m_pcInterPred->adjustIBCMergeCandidates(pu, mrgCtx, 0, IBC_MRG_MAX_NUM_CANDS_MEM);
+                PU::getIBCMergeCandidates(pu, mrgCtx);
+                m_pcInterPred->adjustIBCMergeCandidates(pu, mrgCtx, 0, IBC_MRG_MAX_NUM_CANDS_MEM);
 #else
-              m_pcInterPred->adjustIBCMergeCandidates(pu, mrgCtx);
+                PU::getIBCMergeCandidates(pu, mrgCtx, (((fPosIBCBaseIdx / ADAPTIVE_IBC_SUB_GROUP_SIZE + 1) * ADAPTIVE_IBC_SUB_GROUP_SIZE < pu.cs->sps->getMaxNumIBCMergeCand()) || (fPosIBCBaseIdx / ADAPTIVE_IBC_SUB_GROUP_SIZE) == 0) ? fPosIBCBaseIdx / ADAPTIVE_IBC_SUB_GROUP_SIZE * ADAPTIVE_IBC_SUB_GROUP_SIZE + ADAPTIVE_IBC_SUB_GROUP_SIZE - 1 : fPosIBCBaseIdx);
+                m_pcInterPred->adjustIBCMergeCandidates(pu, mrgCtx, fPosIBCBaseIdx);
+#endif
+              }
+              else
+              {
 #endif
+                PU::getIBCMergeCandidates(pu, mrgCtx, fPosIBCBaseIdx);
+#if JVET_Y0058_IBC_LIST_MODIFY && JVET_W0090_ARMC_TM
+              }
 #endif
 
               PU::getIbcMbvdMergeCandidates(pu, mrgCtx, fPosIBCBaseIdx + 1);
diff --git a/source/Lib/EncoderLib/EncCu.cpp b/source/Lib/EncoderLib/EncCu.cpp
index dfdf218d3035342eaa2d1f0dde0b7e4c8e1c480c..1aa38fb6ae48f40547a649ee3055a6225d9ade4f 100644
--- a/source/Lib/EncoderLib/EncCu.cpp
+++ b/source/Lib/EncoderLib/EncCu.cpp
@@ -10627,11 +10627,14 @@ void EncCu::xCheckRDCostIBCModeMerge2Nx2N(CodingStructure *&tempCS, CodingStruct
     pu.mergeFlag = false;
 
 #if JVET_Y0058_IBC_LIST_MODIFY && JVET_W0090_ARMC_TM
+    if (pu.cs->sps->getUseAML())
+    {
 #if JVET_Z0075_IBC_HMVP_ENLARGE
-    m_pcInterSearch->adjustIBCMergeCandidates(pu, mergeCtxTmp, 0, IBC_MRG_MAX_NUM_CANDS_MEM);
+      m_pcInterSearch->adjustIBCMergeCandidates(pu, mergeCtxTmp, 0, IBC_MRG_MAX_NUM_CANDS_MEM);
 #else
-    m_pcInterSearch->adjustIBCMergeCandidates(pu, mergeCtxTmp);
+      m_pcInterSearch->adjustIBCMergeCandidates(pu, mergeCtxTmp);
 #endif
+    }
 #endif
     pu.ibcMbvdMergeFlag = false;
 #endif