diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp
index 33a59e12e4444fc9aac6faadb3188ac1be36af50..da3f53d911220db4a03a8af5418a97b1e4c0eb02 100644
--- a/source/Lib/DecoderLib/VLCReader.cpp
+++ b/source/Lib/DecoderLib/VLCReader.cpp
@@ -4655,27 +4655,58 @@ void HLSyntaxReader::parseSliceHeaderToPoc (Slice* pcSlice, PicHeader* picHeader
 #else
   // picture order count
   READ_CODE(sps->getBitsForPOC(), uiCode, "slice_pic_order_cnt_lsb");
+#endif
+#if JVET_P0116_POC_MSB
+#if JVET_Q0819_PH_CHANGES
+  int iPOClsb = pocLsb;
+#else
+  int iPOClsb = uiCode;
+#endif
+  int iMaxPOClsb = 1 << sps->getBitsForPOC();
+  int iPOCmsb;
 #endif
   if (pcSlice->getIdrPicFlag())
   {
+#if JVET_P0116_POC_MSB
+    if (picHeader->getPocMsbPresentFlag())
+    {
+      iPOCmsb = picHeader->getPocMsbVal()*iMaxPOClsb;
+    }
+    else
+    {
+      iPOCmsb = 0;
+    }
+#if JVET_Q0819_PH_CHANGES
+    pcSlice->setPOC(iPOCmsb + pocLsb);
+#else
+    pcSlice->setPOC(iPOCmsb + uiCode);
+#endif
+#else
 #if JVET_Q0819_PH_CHANGES
     pcSlice->setPOC(pocLsb);
 #else
     pcSlice->setPOC(uiCode);
+#endif
 #endif
   }
   else
   {
+#if !JVET_P0116_POC_MSB
 #if JVET_Q0819_PH_CHANGES
     int iPOClsb = pocLsb;
 #else
     int iPOClsb = uiCode;
+#endif
 #endif
     int iPrevPOC = prevTid0POC;
+#if !JVET_P0116_POC_MSB
     int iMaxPOClsb = 1 << sps->getBitsForPOC();
+#endif
     int iPrevPOClsb = iPrevPOC & (iMaxPOClsb - 1);
     int iPrevPOCmsb = iPrevPOC - iPrevPOClsb;
+#if !JVET_P0116_POC_MSB
     int iPOCmsb;
+#endif
 #if JVET_P0116_POC_MSB
     if (picHeader->getPocMsbPresentFlag())
     {