I have successfully sorted out sp00n's bug. Apparently units were qualified to take some promotions they weren't afterwards qualified to keep. This was due to the fact that the canKeep check was running a check on isPromotionValid and finding it false because it was expecting it was looking at the promo as if it were attempting to add it and the totals on interception values, if added again, would push past the barrier. The fix for this was to make sure that those sorts of calculatory checks would not take place if only checking to see if the promo could be retained.
Took a bit to sort it out but I got it!