Fix float point overflow when doing pass up

The old way of rounding floor(x/((float)sizeof(int)))*sizeof(int)) will
cause overflow when x is greater than 203672784. For example, if x is
203672792, the above expression will give 203672800. When this bigger
value is minus by parent_sent_pos, negative value can be generated
which is later assigned to an unsigned integer. This will cause the
whole learning fail. This patch fixes the above expression and a
potential network problem.