# moduloOrZero

Same as [MOD](https://docs.pinot.apache.org/functions/math/mod) but returns zero when dividing by zero or when dividing `Long.MIN_VALUE` by `-1`. This is a polymorphic function that preserves the input numeric type.

## Signature

moduloOrZero(col1, col2)

| Argument | Type                                   | Description |
| -------- | -------------------------------------- | ----------- |
| `col1`   | INT, LONG, FLOAT, DOUBLE, BIG\_DECIMAL | Dividend    |
| `col2`   | INT, LONG, FLOAT, DOUBLE, BIG\_DECIMAL | Divisor     |

Returns the same numeric type as the inputs (or the wider type if inputs differ).

## Usage Examples

```sql
SELECT moduloOrZero(10, 3) AS value
FROM myTable
```

| value |
| ----- |
| 1     |

```sql
SELECT moduloOrZero(10, 0) AS value
FROM myTable
```

| value |
| ----- |
| 0     |

```sql
SELECT moduloOrZero(10L, 3L) AS long_modulo, moduloOrZero(10.5F, 3.0F) AS float_modulo, moduloOrZero(10.5, 3.0) AS double_modulo
FROM myTable
```

Returns LONG, FLOAT, DOUBLE respectively (preserving input type).
