Hola, ¿qué tal?
Solo he usado un par de veces la función MOD en los micros, la función MOD genera el resto o residuo en una división, y para el segundo caso que lo utilicé, fue en la conversión de un valor que fue generado al azar por otra función.
para convertir un rango de valores aleatorios y llevarlo a un rango menor de valores (aleatorios) una forma de hacerlo es mediante la función MOD (modulo, resto, residuo, según el compilador o el interprete que se esté usando)

donde N son numeros enteros positivos (hasta donde lo estudié y con variables del tipo 16 bits de largo).
Hasta aquí lo entiendo, pero matematicamente no entiendo porque esto sucede así.