# Mod

## Mod(x, y*, pos*)

The remainder (modulus) of «x» / «y».

The sign of the result of `Mod(x,y)`

is the same as the sign of «x» -- i.e., if «x» is negative, then so is the result. The sign of «y» does not impact the sign of the result. This variation is the same convention used by the corresponding operator in C/C++ (ISO 1999), C#, Java, PHP, Visual Basic, AMPL and many other languages. Some languages, including MATLAB, Lisp, Fortran, and Ada, have two different modulo operators, with one corresponding to this convention. The modulo operator in a few other languages, including Mathematica, R and Excel, do not follow this convention (these use the sign of the denominator).

You can specify «pos» as true to force the result to be non-negative, in the range `0 ≤ Mod(x,y) < Abs(y)`

. As «x» increases through all negative and positive numbers, the result cycles through this range.

`Mod(x,1)`

extracts the fractional portion of a number.

## Examples

`Mod(20,7) → 6`

`Mod(-20,7) → -6`

`Mod(-20,-7) → -6`

`Mod(20,-7) → 6`

`Mod(-20,7,pos: true) → 1`

`Mod(Pi,1) → 0.141592653589793`

## Special uses

### IsOdd and IsEven

To test whether an integer `x`

is odd use `Mod(x, 2) == 1`

, and similarly, to test whether an integer is even use `Mod(x, 2) == 0`

.

### IsInteger

To test whether a number `x`

is an integer, use `Mod(x,1) == 0`

### The fractional part of a number

### Time part of a date-time number

(*new in Analytica 6.0*) When you have a date-time number, `Mod(d,1)`

returns the time part and returns it as a date-time number instead of a float.

Enable comment auto-refresher