Is this a bug or did I misunderstood arithmetic or cast()? cast(int)(-5 * 1 * 0.41)); // result: -2 cast(int)(-5 * 1u); // result: -5 cast(int)(-5 * 1u * 0.41)); // result: 1760936589 The last result seems strange to me. I use dmd 1.005. Henning