# Users can lose fractions to precision loss during migraction if _newFractionSupply is set very low

Migration.sol rounds share math; with a tiny _newFractionSupply, small contributors get zero shares and the vault can freeze permanently.

- Payout: Contest reward
- Severity: high
- Program: Fractional
- Credited: 0x52
- Disclosed: 2022-09-27
- Write-up quality: 6/10
- Original: https://github.com/code-423n4/2022-07-fractional-findings/issues/137
- Library page: https://bugbountylibrary.com/r/c4%3A2022-07-fractional%3AH-11
- Tags: domain:web3 impact:dos impact:funds-loss kind:contest platform:code4rena sev:high tech:solidity technique:source-review vuln:accounting-error vuln:precision-loss

**Target:** Migration.sol migrateFractions share calculation
**Root cause:** Share amounts are computed by integer division against _newFractionSupply without a minimum bound, so contributions below the rounding threshold truncate to zero.
**Steps:**
1. Set _newFractionSupply to a low value, e.g. 10, via propose.
2. Call `migrateFractions` as a user contributing less than 10% of total contributions.
3. Observe the computed share truncates to 0 and the user receives nothing.
4. If fewer than 5 fractions can be redeemed, the vault cannot be bought out and stays frozen.
**How found:** Code reading of the share math in Migration.sol lines 471-472, noticing integer division truncation when supply is small.
**Escalation:** If too few holders clear the rounding threshold, the vault can never be bought out, permanently freezing it.
**Insight:** When auditing migration/redemption math, test share calculations with extreme low supply values to expose truncation-to-zero and vault-freeze conditions.
