if (rand > 0 && tmp > 0 && G_MAXINT32 - tmp <= rand) tmp = G_MAXINT32; else if (rand < 0 && tmp < 0 && G_MININT32 - tmp >= rand) tmp = G_MININT32; else tmp += rand;