```\n125     // Credit ZETH and Ditto rewards earned from shortRecords from all markets\n126     function _claimYield(uint256 vault, uint88 yield, uint256 dittoYieldShares) private {\n127         STypes.Vault storage Vault = s.vault[vault];\n128         STypes.VaultUser storage VaultUser = s.vaultUser[vault][msg.sender];\n129         // Implicitly checks for a valid vault\n130         if (yield <= 1) revert Errors.NoYield();\n131         // Credit yield to ethEscrowed\n132         VaultUser.ethEscrowed += yield;\n133         // Ditto rewards earned for all shorters since inception\n134         uint256 protocolTime = LibOrders.getOffsetTime();\n135         uint256 dittoRewardShortersTotal = Vault.dittoShorterRate * protocolTime;\n136         // Ditto reward proportion from this yield distribution\n137         uint256 dittoYieldSharesTotal = Vault.zethCollateralReward;\n138         uint256 dittoReward =\n139             dittoYieldShares.mul(dittoRewardShortersTotal).div(dittoYieldSharesTotal);\n140         // Credit ditto reward to user\n141         if (dittoReward > type(uint80).max) revert Errors.InvalidAmount();\n142         VaultUser.dittoReward += uint80(dittoReward);\n143     }\n```\n