int float_to_int_cast(float n)
{
 const int bias = 1258291200;
 n += *(float*)&bias;
 return *(int*)&n - bias;
}

float>intへのキャストに上の関数を使うと良いらしいんですが、
負数の時におかしい値が返ってきます。
負数に対応してないならunsignedにすると思うのですが、
そうなっていないので、コードのバグでしょうか?