Are there any drawbacks to this code, which appears to be a faster (and correct) version of java.lang.Math.round?
public static long round(double d) {
    if (d > 0) {
        return (long) (d + 0.5d);
    } else {
        return (long) (d - 0.5d);
    }
}
It takes advantage of the fact that, in Java, truncating to long rounds in to zero.