more accurate rebalance