guava/src/com/google/common/math/IntMath.java
public static int mod(int x, int m) {
    if (m <= 0) {
      throw new ArithmeticException("Modulus " + m + " must be > 0");
    }
    int result = x % m;
    return (result >= 0) ? result : result + m;
  }
public static int mod(int x, int m) {
    if (m <= 0) {
      throw new ArithmeticException("Modulus " + m + " must be > 0");
    }
    int result = x % m;
    return (result >= 0) ? result : result + m;
  }
public static int mod ( int x , int m ) { if ( m <= 0 ) { throw new ArithmeticException ( "Modulus " + m + " must be > 0" ) ; } int result = x % m ; return ( result >= 0 ) ? result : result + m ; }
Returns {@code x mod m}, a non-negative value less than {@code m}. This differs from {@code x %
m}, which might be negative.

<p>For example:

<pre>{@code
mod(7, 4) == 3
mod(-7, 4) == 1
mod(-1, 4) == 3
mod(-8, 4) == 0
mod(8, 4) == 0
}</pre>

@throws ArithmeticException if {@code m <= 0}
@see <a href="http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.17.3">
Remainder Operator</a>
Returns { @code x mod m } a non - negative value less than { @code m } . This differs from { @code x % m } which might be negative .