PrecisionCalc
xl
Precision
Get Your Numbers Right
xlpMOD
The remainder after integer division. The portion of the dividend left over after dividing the divisor into it evenly as many times as possible. Same as Excel's builtin MOD function, but with high precision.
Rounds the quotient down (toward negative infinity) to an integer, multiplies it by the divisor, and subtracts that result from the dividend (see formula below), with up to 32,767 significant digits of precision. Result takes the sign of the divisor unless otherwise specified.
MOD(dividend, divisor) = dividend  (divisor x INT(dividend / divisor))
Syntax
xlpMOD(dividend,divisor,sign,format_negative,format_thousands,format_currency,exponential_notation,maximum_significant_digits)
dividend  Required. The number to be divided by divisor.  
divisor  Required. The number to divide into dividend.  
sign  Optional. Determines whether the sign of the return value is positive or negative. 3 by default.  
sign value 
Result  
1  Return value takes the sign of the result of the mod formula.  
2  Return value takes the sign of the dividend.  
3  Return value takes the sign of the divisor (Default)  
4  Return value is always positive.  
5  Return value is always negative.  
format_negative  Optional. Determines whether
negatives are formatted with a leading hyphen (""), or parentheses ("()").
Set to 1 to format negatives with a leading hyphen. Set to 2 for
parentheses. 1 by default.
You can also format negatives with a red font. 

format_thousands  Optional. Determines whether thousands separators are included. Set to TRUE to include thousands separators. FALSE by default.  
format_currency  Optional. Determines whether currency symbol is included. Set to TRUE to include currency symbol. The currency symbol will be added either to the beginning or to the end of the result, whichever is appropriate for the locale. FALSE by default.  
exponential_notation  Optional. Determines whether result is formatted in exponential notation. Set to TRUE to format in exponential notation. FALSE by default.  
maximum_significant_digits  Optional. Determines the maximum number of significant digits to be returned. Default is 100, or the user's custom maximum set in the About box, or the maximum number allowed by the edition of xlPrecision, whichever is less. 
Remarks
When xlpMOD rounds down the quotient, it rounds toward negative infinity, not toward zero. This means that positives are rounded toward zero, while negatives are rounded away from zero. This is the same behavior as Microsoft Excel's MOD function. To round both positive and negative quotients toward zero, use xlpMODTRUNC instead.
xlpMOD uses the same formula as Microsoft Excel's MOD function, but adds high precision. To get the fractional portion of a quotient from noninteger division, use xlpFRAC on the quotient.
xlPrecision results are returned as text that look like numbers, not as values that Excel recognizes as numbers. This is because Excel would truncate the results to 15 significant digits if it recognized them as numbers.
format_negative, format_thousands, format_currency, and exponential_notation are all ignored by the 25 SD edition of xlPrecision.
format_thousands and exponential_notation are ignored by the 35 SD edition of xlPrecision.
maximum_significant_digits is ignored if it is higher than the maximum significant digits allowed by the edition of xlPrecision.
Use maximum_significant_digits to increase calculation speed where desired. The lower the number used, the faster the calculation.
num can accept cells with both numbers and text.
num can accept cells with text formatted with the local currency symbol and thousands separators, and negatives can be formatted with either a leading hyphen or parentheses.
You can use the results of xlPrecision functions as the operands in other xlPrecision formulas without losing any precision, but using them as operands in Excel's arithmetic functions will truncate them to 15 significant digits.
If the return value is so large that it has more than 32,767 characters to the left of the decimal, then xlPrecision is of course unable to return a correct value and instead returns "#VALUE!". Note, that's a vastly larger number than Excel can return without xlPrecision. Excel itself can only return or recognize a number with no more than 308 digits to the left of the decimal.
Decimal symbols, thousands separators, and currency symbols are all localized. This means that an xlPrecision formula that returns "$1,234,567.89" in the USA will return "1.234.567,89 €" in Germany, "1 234 567,89 €" in France, "1 234 567.89 kr" in Estonia, and "1.234.567,89Lek" in Albania.
The 32,767 SD edition can only provide a maximum of 32,767 total characters, including all formatting characters such as decimal, leading hyphen or parentheses for negatives, and thousands separators. As a result, it can only return the maximum 32,767 significant digits when the result is an unformatted positive integer. This is due to Excel's limitation of 32,767 characters in a cell. In all cases, the 32,767 SD edition will give you as many significant digits as possible with the formatting you have chosen.
Depending on how many significant digits the edition of xlPrecision provides, the result may be too long to conveniently view. You can view the full result by rightclicking the cell and choosing Format Cells  Alignment  Wrap Text, and widening the column to the width of the screen. An easy way to view the full result without changing column widths or wrapping text is to rightclick the cell, choose Copy, and then paste into Notepad or a word processor.
Examples
Formula  Description  Result 
=xlpMOD(3,2)  3  (2 x INT(3 / 2))  1 
=xlpMOD(3.3,2.2)  3.3  (2.2 x INT(3.3 / 2.2))  1.1 
=xlpMOD(3.3,2.2)  (3.3)  (2.2 x
INT((3.3) / 2.2)) (takes the positive sign of the divisor) 
1.1 
=xlpMOD(3.3,2.2)  3.3  ((2.2) x
INT(3.3 / (2.2))) (takes the negative sign of the divisor) 
1.1 
=xlpMOD(3.3,2.2)  (3.3)  ((2.2)
x INT((3.3) / (2.2))) (takes the negative sign of the divisor) 
1.1 
=xlpMOD(3,4)  3  ((4) x INT(3 / (4))) (takes the negative sign of the divisor) 
1 (compare to xlpMODTRUNC) 
See Also