diff --git a/source/Lib/EncoderLib/CABACWriter.cpp b/source/Lib/EncoderLib/CABACWriter.cpp
index 121ab4b34f6d0d9316e876b7f09be8853e9f6ddc..300c5a575dfed5dc06ee395766c3c1668fb38354 100644
--- a/source/Lib/EncoderLib/CABACWriter.cpp
+++ b/source/Lib/EncoderLib/CABACWriter.cpp
@@ -2048,6 +2048,7 @@ void CABACWriter::merge_idx( const PredictionUnit& pu )
     {
       numCandminus1 = int(pu.cs->sps->getMaxNumMergeCand()) - 1;
     }
+    CHECK(pu.mergeIdx > numCandminus1, "mergeIdx out of range");
     if (numCandminus1 > 0)
     {
       if (pu.mergeIdx == 0)
@@ -2078,10 +2079,11 @@ void CABACWriter::mmvd_merge_idx(const PredictionUnit& pu)
   const int mvdStep     = pu.mmvdMergeIdx.pos.step;
   const int mvdPosition = pu.mmvdMergeIdx.pos.position;
 
+  CHECK(mvdBaseIdx >= std::min<int>(pu.cs->sps->getMaxNumMergeCand(), MmvdIdx::BASE_MV_NUM), "MMVD base index out of range");
+
   if (pu.cs->sps->getMaxNumMergeCand() > 1)
   {
     static_assert(MmvdIdx::BASE_MV_NUM == 2, "");
-    assert(mvdBaseIdx < 2);
     m_binEncoder.encodeBin(mvdBaseIdx, Ctx::MmvdMergeIdx());
   }
   DTRACE(g_trace_ctx, D_SYNTAX, "base_mvp_idx() base_mvp_idx=%d\n", mvdBaseIdx);
diff --git a/source/Lib/EncoderLib/EncCu.cpp b/source/Lib/EncoderLib/EncCu.cpp
index 2ef16d85d28fcf160ecab5a4030d6fcb59e5d302..fbb52e6fa3ee000fa8344b8443b46544b68fd66d 100644
--- a/source/Lib/EncoderLib/EncCu.cpp
+++ b/source/Lib/EncoderLib/EncCu.cpp
@@ -3015,12 +3015,11 @@ void EncCu::addMmvdCandsToPruningList(const MergeCtx& mergeCtx, const UnitArea&
 {
   pu->cu->mmvdSkip = true;
   pu->regularMergeFlag = true;
-  const int tempNum = (mergeCtx.numValidMergeCand > 1) ? MmvdIdx::ADD_NUM : MmvdIdx::ADD_NUM >> 1;
-  for (int mmvdMergeCand = 0; mmvdMergeCand < tempNum; mmvdMergeCand++)
+  for (int mmvdMergeCand = 0; mmvdMergeCand < MmvdIdx::ADD_NUM; mmvdMergeCand++)
   {
     MmvdIdx mmvdIdx;
     mmvdIdx.val = mmvdMergeCand;
-    if (mmvdIdx.pos.step >= m_pcEncCfg->getMmvdDisNum())
+    if (mmvdIdx.pos.step >= m_pcEncCfg->getMmvdDisNum() || mmvdIdx.pos.baseIdx >= mergeCtx.numValidMergeCand)
     {
       continue;
     }