	uint256 virtualRewardsToRemove = (user.virtualRewards * decreaseShareAmount) / user.userShare;
	if ( virtualRewardsToRemove < rewardsForAmount )
		claimableRewards = rewardsForAmount - virtualRewardsToRemove; 
	require( decreaseShareAmount != 0, "Cannot decrease zero share" );
	// Some of the rewardsForAmount are actually virtualRewards and can't be claimed.
		// Determine the share of the rewards for the amountToDecrease (will include previously added virtual rewards)
		uint256 rewardsForAmount = ( totalRewards[poolID] * decreaseShareAmount ) / totalShares[poolID];

		// For the amountToDecrease determine the proportion of virtualRewards (proportional to all virtualRewards for the user)
		// Round virtualRewards down in favor of the protocol
		uint256 virtualRewardsToRemove = (user.virtualRewards * decreaseShareAmount) / user.userShare;
		if ( virtualRewardsToRemove < rewardsForAmount )
			claimableRewards = rewardsForAmount - virtualRewardsToRemove;
		require( decreaseShareAmount != 0, "Cannot decrease zero share" );
