>> I prefer to round the half-ways to
>> the greater magnitude, i.e. negatives
>> down, positives up.

Then having written that, I included an example that rounded negative half-ways up.

inline int func1(float n) { return int((n>0.0) ? n+0.5 : n-0.5); }
inline int func2(float n) { return int(floor(n+0.5)); }

func1(-3.5) -> -4
func2(-3.5) -> -3

Not only should the programmer be consistent, but I think that the programmer should consider the results of the round-off approximations of a player sitting at a table, and adopt the code that most closely emulates it.

If a player has a running count of +4 with 105 cards left, he's going to convert to +2, right? Emulate that condition using a nothing more than a floor() function and you might not be very happy with a round off from +1.98095 to +1.