CurrReportIDInfo->ReportSizeBits[NewReportItem.ItemType] += CurrStateTable->Attributes.BitSize;
 
-                                       if (ParserData->LargestReportSizeBits < NewReportItem.BitOffset)
-                                         ParserData->LargestReportSizeBits = NewReportItem.BitOffset;
+                                       ParserData->LargestReportSizeBits = MAX(ParserData->LargestReportSizeBits, CurrReportIDInfo->ReportSizeBits[NewReportItem.ItemType]);
 
-                                       if (!(ReportItemData & HID_IOF_CONSTANT) && CALLBACK_HIDParser_FilterHIDReportItem(&NewReportItem))
-                                       {
-                                               if (ParserData->TotalReportItems == HID_MAX_REPORTITEMS)
-                                                 return HID_PARSE_InsufficientReportItems;
+                                       if (ParserData->TotalReportItems == HID_MAX_REPORTITEMS)
+                                         return HID_PARSE_InsufficientReportItems;
 
-                                               memcpy(&ParserData->ReportItems[ParserData->TotalReportItems],
-                                                      &NewReportItem, sizeof(HID_ReportItem_t));
+                                       memcpy(&ParserData->ReportItems[ParserData->TotalReportItems],
+                                              &NewReportItem, sizeof(HID_ReportItem_t));
 
-                                               ParserData->TotalReportItems++;
-                                       }
+                                       if (!(ReportItemData & HID_IOF_CONSTANT) && CALLBACK_HIDParser_FilterHIDReportItem(&NewReportItem))
+                                         ParserData->TotalReportItems++;
                                }
 
                                break;
                               HID_ReportItem_t* const ReportItem)
 {
        if (ReportItem == NULL)
-               return false;
+         return false;
 
        uint16_t DataBitsRem  = ReportItem->Attributes.BitSize;
        uint16_t CurrentBit   = ReportItem->BitOffset;
                               HID_ReportItem_t* const ReportItem)
 {
        if (ReportItem == NULL)
-               return;
+         return;
 
        uint16_t DataBitsRem  = ReportItem->Attributes.BitSize;
        uint16_t CurrentBit   = ReportItem->BitOffset;