diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp
index 32234ff19509eebc2f745b6c0bbf7114bb80ad9b..e43a00146fd6581ba4b73622f1e71319e1a6434d 100644
--- a/source/Lib/EncoderLib/EncLib.cpp
+++ b/source/Lib/EncoderLib/EncLib.cpp
@@ -2234,8 +2234,9 @@ void EncLib::getActiveRefPicListNumForPOC(const SPS *sps, int POCCurr, int GOPid
   {
     if (POCCurr < (2 * m_iGOPSize + 2))
     {
-      rpl0Idx = POCCurr + m_iGOPSize - 1;
-      rpl1Idx = POCCurr + m_iGOPSize - 1;
+      int candidateIdx = (POCCurr + m_iGOPSize - 1 >= fullListNum + partialListNum) ? GOPid : POCCurr + m_iGOPSize - 1;
+      rpl0Idx = candidateIdx;
+      rpl1Idx = candidateIdx;
     }
     else
     {
@@ -2296,8 +2297,9 @@ void EncLib::selectReferencePictureList(Slice* slice, int POCCurr, int GOPid, in
   {
     if (POCCurr < (2 * m_iGOPSize + 2))
     {
-      slice->setRPL0idx(POCCurr + m_iGOPSize - 1);
-      slice->setRPL1idx(POCCurr + m_iGOPSize - 1);
+      int candidateIdx = (POCCurr + m_iGOPSize - 1 >= fullListNum + partialListNum) ? GOPid : POCCurr + m_iGOPSize - 1;
+      slice->setRPL0idx(candidateIdx);
+      slice->setRPL1idx(candidateIdx);
     }
     else
     {