public boolean checkInstitutionalProposalPersonUnitCreditSplitTotals(
      InstitutionalProposalPersonUnitCreditSplitRuleEvent event) {
    int errorCount = 0;
    for (InvestigatorCreditType creditType : loadInvestigatorCreditTypes()) {
      if (creditType.addsToHundred()) {
        ScaleTwoDecimal value = event.getTotalsByCreditSplitType().get(creditType.getCode());
        if (value == null) {
          break; // value may not have been initialized yet, so we don't want to block save
        }
        if (!MAX_TOTAL_VALUE.subtract(value).isZero()) {
          InstitutionalProposalCreditSplitAuditError.addAuditError(
              PROPOSAL_PERSON_UNIT_CREDIT_SPLIT_ERROR_MSG_KEY, creditType.getDescription());
          errorCount++;
        }
      }
    }

    return errorCount == 0;
  }