{
  "category": "Math and trigonometry functions",
  "display_name": "ROUND",
  "entry_kind": "built_in_function",
  "eval_api": {
    "method": "POST",
    "url": "https://handbook.dnacalc.com/api/eval"
  },
  "function_id": "FUNC.ROUND",
  "implementation_state": {
    "answer_bank": {
      "excel_builds": [
        "20430"
      ],
      "larger_numeric": 0,
      "last_bit": 124,
      "matched": 36821,
      "other_mismatch": 0,
      "refused": 0,
      "rows": 36945,
      "unread": 0,
      "worst_ulp": 16
    },
    "detail": "Everything else matches (36,945 in the answer bank and 193 workbook cells). Last-bit means a finite number within 16 ULP of Excel's.",
    "dnacalc_commit": "9e1884369a678158dd82d3d74188daf986995e87",
    "in_catalogue": true,
    "state": "close",
    "state_label": "Close: last-bit deviations remain",
    "summary": "Close: 124 of 37,138 recorded answers differ in the last bits, worst 16 ULP",
    "workbook_corpus": {
      "cells": 193,
      "matched": 193
    }
  },
  "implementations": [
    {
      "commit": "9e1884369a678158dd82d3d74188daf986995e87",
      "flavour": "excel-compatibility-candidate",
      "language": "Rust",
      "name": "CalcFunc",
      "own_code": [
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/rounding.rs#L108-L108",
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/rounding.rs#L245-L253",
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/rounding.rs#L292-L319"
      ],
      "repository": "https://github.com/DnaCalc/DnaCalc",
      "shared_code": [
        "catalogue/rounding::call",
        "catalogue/rounding::numeric",
        "catalogue/rounding::numbers",
        "catalogue/rounding::reading",
        "catalogue/rounding::flush",
        "catalogue/rounding::whole_reading",
        "catalogue/rounding::stored",
        "decimal::low32",
        "decimal::Natural::zero",
        "decimal::Natural::from_u64",
        "decimal::Natural::pow10",
        "decimal::Natural::normalize",
        "decimal::Natural::is_zero",
        "decimal::Natural::mul_add_small",
        "decimal::Natural::add_one",
        "decimal::Natural::times_pow10",
        "decimal::Natural::times_pow5",
        "decimal::Natural::times_pow2",
        "decimal::Natural::add",
        "decimal::Natural::subtract",
        "decimal::Natural::bit_len",
        "decimal::Natural::bit",
        "decimal::Natural::pow2",
        "decimal::Natural::from_u128",
        "decimal::Natural::to_u128",
        "decimal::Natural::shift_in",
        "decimal::Natural::div_rem",
        "decimal::Natural::div_small",
        "decimal::Natural::digits",
        "decimal::Natural::cmp",
        "decimal::ExactDecimal::read",
        "decimal::ExactDecimal::fifteen",
        "decimal::ExactDecimal::magnitude",
        "decimal::ExactDecimal::fifteen_x87",
        "decimal::ExactDecimal::normalized",
        "decimal::ExactDecimal::binary",
        "decimal::ExactDecimal::round_at",
        "decimal::round_to_64_bits",
        "decimal::truncate"
      ],
      "source": "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/rounding.rs#L108-L108",
      "state": "close",
      "suite": null,
      "summary": "Close: 124 of 37,138 recorded answers differ in the last bits, worst 16 ULP"
    }
  ],
  "json_url": "https://handbook.dnacalc.com/api/functions/FUNC.ROUND.json",
  "name": "ROUND",
  "notes": [
    {
      "basis": "Under the family rules the recorded rows match ROUND 36,821 of 36,945, ROUNDUP 52,022 of 52,841, ROUNDDOWN 59,182 of 59,995 and TRUNC 50,504 of 51,317, with no row lost and each remaining failure classified in the write-up. The wrap boundary was read at every decimal exponent in the recorded rows.",
      "documentation": null,
      "evidence": [
        {
          "commit": "ab94fb91a50fbdf89bdb2dac0e12fcd77a5e5f82",
          "locator": null,
          "note": "the rules in the product; the commit message carries the row counts",
          "path": "crates/calc-func/src/catalogue/rounding.rs",
          "repository": "DnaCalc"
        },
        {
          "commit": "b5d84a80a5a4640eca9ce04f232c0bc115503f34",
          "locator": null,
          "note": "research write-up: full-bank result, the rules, what stays open",
          "path": "content/notes/evidence/2026-11-04/rounding-EVIDENCE.md",
          "repository": "ExcelFunctionsHandbook"
        }
      ],
      "functions": [
        "FUNC.ROUND"
      ],
      "inferred": null,
      "kind": "excel-differs-from-math",
      "note_id": "FN-ROUND-001",
      "open": [],
      "recorded_on": "2026-11-04",
      "repros": [
        {
          "call": "ROUND(-112500000000000, 2147483635)",
          "correct": {
            "bits": "0xc2d9945ca2620000",
            "display": "-112500000000000",
            "how": "-112500000000000 is an integer, so rounding it to any non-negative number of places returns it.",
            "kind": "number"
          },
          "excel": {
            "bits": "0x0000000000000000",
            "display": "0",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "number",
              "value": {
                "bits": "0xc2d9945ca2620000",
                "display": "-112500000000000",
                "kind": "number"
              }
            },
            {
              "name": "num_digits",
              "value": {
                "bits": "0x41dffffffcc00000",
                "display": "2147483635",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0 build 20430, Windows 64-bit, CPU not recorded in this capture",
          "source": {
            "commit": "4d5320dfdc385354469b4d506153357bb932ab08",
            "locator": "w111roundcount-ROUND-01694",
            "note": null,
            "path": "runs/w111-rounding-count-refinement-20260929/answers-round.json.gz",
            "repository": "CalcFunc-Evidence"
          }
        },
        {
          "call": "ROUND(-112500000000000, 2147483617)",
          "correct": null,
          "excel": {
            "bits": "0xc2d9945ca2620000",
            "display": "-112500000000000",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "number",
              "value": {
                "bits": "0xc2d9945ca2620000",
                "display": "-112500000000000",
                "kind": "number"
              }
            },
            {
              "name": "num_digits",
              "value": {
                "bits": "0x41dffffff8400000",
                "display": "2147483617",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0 build 20430, Windows 64-bit, CPU not recorded in this capture",
          "source": {
            "commit": "4d5320dfdc385354469b4d506153357bb932ab08",
            "locator": "w111roundcount-ROUND-01682",
            "note": null,
            "path": "runs/w111-rounding-count-refinement-20260929/answers-round.json.gz",
            "repository": "CalcFunc-Evidence"
          }
        }
      ],
      "schema": "efh.function-note/v1",
      "statement": "ROUND cuts num_digits toward zero to a 32-bit integer D, limited to +/-2147483647, and keeps k = D + e + 1 significant digits, where e is the decimal exponent of |number| and the sum is computed in 32 bits. k of 15 or more keeps the 15-digit reading of the number; k below 0 gives 0. A large positive num_digits therefore wraps to no digits at all: for a number near 1.1E14, 2147483617 returns the number and 2147483635 returns 0. The boundaries move by exactly -e on both the +2^31 and -2^31 sides, for e from -308 to 308. num_digits of 2^31 or more acts as +2147483647 and -2^31 or less as -2147483647.",
      "status": "measured",
      "title": "ROUND counts digits in 32 bits, and the count wraps"
    },
    {
      "basis": "Under the family rules the recorded rows match ROUND 36,821 of 36,945, ROUNDUP 52,022 of 52,841, ROUNDDOWN 59,182 of 59,995 and TRUNC 50,504 of 51,317, with no row lost and each remaining failure classified in the write-up.",
      "documentation": null,
      "evidence": [
        {
          "commit": "ab94fb91a50fbdf89bdb2dac0e12fcd77a5e5f82",
          "locator": null,
          "note": "the rules in the product; the commit message carries the row counts",
          "path": "crates/calc-func/src/catalogue/rounding.rs",
          "repository": "DnaCalc"
        },
        {
          "commit": "b5d84a80a5a4640eca9ce04f232c0bc115503f34",
          "locator": null,
          "note": "research write-up: full-bank result, the rules, what stays open",
          "path": "content/notes/evidence/2026-11-04/rounding-EVIDENCE.md",
          "repository": "ExcelFunctionsHandbook"
        }
      ],
      "functions": [
        "FUNC.ROUND",
        "FUNC.ROUNDDOWN",
        "FUNC.ROUNDUP",
        "FUNC.TRUNC"
      ],
      "inferred": null,
      "kind": "excel-differs-from-math",
      "note_id": "FN-ROUND-002",
      "open": [
        "How the scale is formed for |n| > 27: a single correctly rounded 64-bit power and the chained multiplications tried do not fit; 123 ROUND, 548 ROUNDUP, 556 ROUNDDOWN and 555 TRUNC rows remain.",
        "The reading step itself: one control at n = -10 misses the single RN64 step by just over half a unit, so that step is an approximation of the real one even for |n| <= 27. It stays because it gains rows and loses none."
      ],
      "recorded_on": "2026-11-04",
      "repros": [
        {
          "call": "ROUND(-1594628480062905, 14)",
          "correct": {
            "bits": "0xc316a939806956e4",
            "display": "-1594628480062905",
            "how": "An integer rounded to 14 places is itself.",
            "kind": "number"
          },
          "excel": {
            "bits": "0xc316a939806956d0",
            "display": "-1594628480062900",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "number",
              "value": {
                "bits": "0xc316a939806956e4",
                "display": "-1594628480062905",
                "kind": "number"
              }
            },
            {
              "name": "num_digits",
              "value": {
                "bits": "0x402c000000000000",
                "display": "14",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0 build 20430, Windows 64-bit, AMD Ryzen 7 4800H",
          "source": {
            "commit": "4d5320dfdc385354469b4d506153357bb932ab08",
            "locator": "line 3758, key ROUND|0xc316a939806956e4|0x402c000000000000",
            "note": null,
            "path": "cache/oracle-20430/build-20430/ROUND.jsonl.gz",
            "repository": "CalcFunc-Evidence"
          }
        },
        {
          "call": "ROUNDDOWN(283025097725723.5, 0)",
          "correct": {
            "bits": "0x42f0168ea69971b0",
            "display": "283025097725723",
            "how": "ROUNDDOWN drops the fraction .5.",
            "kind": "number"
          },
          "excel": {
            "bits": "0x42f0168ea69971c0",
            "display": "283025097725724",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "number",
              "value": {
                "bits": "0x42f0168ea69971b8",
                "display": "283025097725723.5",
                "kind": "number"
              }
            },
            {
              "name": "num_digits",
              "value": {
                "bits": "0x0000000000000000",
                "display": "0",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0 build 20430, Windows 64-bit, AMD Ryzen 7 4800H",
          "source": {
            "commit": "4d5320dfdc385354469b4d506153357bb932ab08",
            "locator": "line 753, key ROUNDDOWN|0x42f0168ea69971b8|0x0000000000000000",
            "note": null,
            "path": "cache/oracle-20430/build-20430/ROUNDDOWN.jsonl.gz",
            "repository": "CalcFunc-Evidence"
          }
        }
      ],
      "schema": "efh.function-note/v1",
      "statement": "Before choosing a digit these functions read the number to 15 significant digits on the x87 unit: with e the decimal exponent and n = 14 - e, y = RN64(|x| * 10^n), or RN64(|x| / 10^-n) when n is negative, while 10^|n| is exact in 64 bits (|n| <= 27). A half in y goes up for ROUNDDOWN, ROUNDUP and TRUNC and down for ROUND. So digits beyond the 15th are lost even when the requested precision keeps them: ROUND(-1594628480062905,14) loses its last digit, and ROUNDDOWN(283025097725723.5,0) returns 283025097725724, larger than its input.",
      "status": "measured",
      "title": "The rounding functions read 15 digits first, so ROUNDDOWN can round up"
    },
    {
      "basis": "One Excel workbook read cell by cell through Value2 on 2026-11-04, saved, reopened and recalculated; rows from the rounding write-up, 627 of 627.",
      "documentation": null,
      "evidence": [
        {
          "commit": "ab94fb91a50fbdf89bdb2dac0e12fcd77a5e5f82",
          "locator": null,
          "note": "the rules in the product; the commit message carries the row counts",
          "path": "crates/calc-func/src/catalogue/rounding.rs",
          "repository": "DnaCalc"
        },
        {
          "commit": "b5d84a80a5a4640eca9ce04f232c0bc115503f34",
          "locator": "cells A1..A4, B1..B24, reopened, recalculated",
          "note": "cell-by-cell Excel reading of the NaN patterns",
          "path": "content/notes/evidence/2026-11-04/round-nan-downstream.json",
          "repository": "ExcelFunctionsHandbook"
        },
        {
          "commit": "b5d84a80a5a4640eca9ce04f232c0bc115503f34",
          "locator": null,
          "note": "the script that took the reading",
          "path": "content/notes/evidence/2026-11-04/round-nan-downstream.ps1",
          "repository": "ExcelFunctionsHandbook"
        },
        {
          "commit": "b5d84a80a5a4640eca9ce04f232c0bc115503f34",
          "locator": null,
          "note": "the sheet as Excel saved it",
          "path": "content/notes/evidence/2026-11-04/round-nan-downstream-sheet1.xml",
          "repository": "ExcelFunctionsHandbook"
        },
        {
          "commit": "b5d84a80a5a4640eca9ce04f232c0bc115503f34",
          "locator": null,
          "note": "research write-up: full-bank result, the rules, what stays open",
          "path": "content/notes/evidence/2026-11-04/rounding-EVIDENCE.md",
          "repository": "ExcelFunctionsHandbook"
        }
      ],
      "functions": [
        "FUNC.ROUND",
        "FUNC.ROUNDDOWN",
        "FUNC.ROUNDUP",
        "FUNC.TRUNC"
      ],
      "inferred": "That one decimal-to-binary conversion routine is the source of all these patterns is inferred from the exponent-overflow encoding.",
      "kind": "excel-differs-from-math",
      "note_id": "FN-ROUND-003",
      "open": [
        "How these patterns sort among themselves and with other numbers, and display width, are not recorded."
      ],
      "recorded_on": "2026-11-04",
      "repros": [
        {
          "call": "ROUND(1.7976931348623157E+308, 0)",
          "correct": {
            "bits": "0x7fefffffffffffff",
            "display": "1.7976931348623157e+308",
            "how": "DBL_MAX is an integer, so rounding it to 0 places returns it.",
            "kind": "number"
          },
          "excel": {
            "bits": "0x7ff000000000000a",
            "display": "NaN bit pattern, shown as 1.8E+308",
            "kind": "nonfinite"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "number",
              "value": {
                "bits": "0x7fefffffffffffff",
                "display": "1.7976931348623157e+308",
                "kind": "number"
              }
            },
            {
              "name": "num_digits",
              "value": {
                "bits": "0x0000000000000000",
                "display": "0",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0 build 20527, Windows; bitness and CPU not recorded in this reading",
          "source": {
            "commit": "b5d84a80a5a4640eca9ce04f232c0bc115503f34",
            "locator": "cells.A3",
            "note": null,
            "path": "content/notes/evidence/2026-11-04/round-nan-downstream.json",
            "repository": "ExcelFunctionsHandbook"
          }
        },
        {
          "call": "ROUND(1.7976931348623157E+308, -307)",
          "correct": {
            "bits": null,
            "display": "#NUM!",
            "how": "The rounded value exceeds the largest binary64; Excel reports overflow in its own arithmetic as #NUM!.",
            "kind": "error"
          },
          "excel": {
            "bits": "0x7ff005419221015d",
            "display": "NaN bit pattern, shown as 1.8E+308",
            "kind": "nonfinite"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "number",
              "value": {
                "bits": "0x7fefffffffffffff",
                "display": "1.7976931348623157e+308",
                "kind": "number"
              }
            },
            {
              "name": "num_digits",
              "value": {
                "bits": "0xc073300000000000",
                "display": "-307",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0 build 20527, Windows; bitness and CPU not recorded in this reading",
          "source": {
            "commit": "b5d84a80a5a4640eca9ce04f232c0bc115503f34",
            "locator": "cells.A2",
            "note": null,
            "path": "content/notes/evidence/2026-11-04/round-nan-downstream.json",
            "repository": "ExcelFunctionsHandbook"
          }
        },
        {
          "call": "ROUND(1.7976931348623157E+308, -308)",
          "correct": {
            "bits": null,
            "display": "#NUM!",
            "how": "The rounded value exceeds the largest binary64; Excel reports overflow in its own arithmetic as #NUM!.",
            "kind": "error"
          },
          "excel": {
            "bits": "0x7ff1ccf385ebc8a0",
            "display": "NaN bit pattern, shown as 2E+308",
            "kind": "nonfinite"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "number",
              "value": {
                "bits": "0x7fefffffffffffff",
                "display": "1.7976931348623157e+308",
                "kind": "number"
              }
            },
            {
              "name": "num_digits",
              "value": {
                "bits": "0xc073400000000000",
                "display": "-308",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0 build 20527, Windows; bitness and CPU not recorded in this reading",
          "source": {
            "commit": "b5d84a80a5a4640eca9ce04f232c0bc115503f34",
            "locator": "cells.A1",
            "note": null,
            "path": "content/notes/evidence/2026-11-04/round-nan-downstream.json",
            "repository": "ExcelFunctionsHandbook"
          }
        }
      ],
      "schema": "efh.function-note/v1",
      "statement": "ROUND of a number near 1.8E308 can return a binary64 with an all-ones exponent field. A decimal result of 2^1024 or more keeps its 53-bit significand, and its exponent is carried into the exponent field without a check, so the bits are a NaN. ROUND, ROUNDDOWN and TRUNC return those bits; ROUNDUP gives #NUM!. The recorded rows hold 430 such ROUND rows, 102 ROUNDDOWN and 95 TRUNC, and all 627 follow this. Even ROUND(DBL_MAX,0), whose answer is DBL_MAX, returns 0x7ff000000000000a. The cell shows 2E+308 or 1.8E+308, and a pattern with its sign bit set shows 2E+308 too, with no minus. ISNUMBER gives TRUE, ISERROR FALSE, TYPE 1, ERROR.TYPE #N/A; A1=A1 and A1>0 are TRUE. =A1, N(A1), MAX(A1), ABS(A1) and IFERROR(A1,...) pass the pattern on, as does =-A1 with its sign unchanged. Arithmetic on it (A1+0, A1*1, A1-A1, SUM, ROUND) gives #NUM!, and TEXT(A1,\"0\") gives #VALUE!. Saved to .xlsx, each such cell is written as the error #NUM!; reopened, the cells read #NUM! until a full recalculation brings the patterns back.",
      "status": "measured",
      "title": "Near DBL_MAX, ROUND returns NaN bit patterns that Excel treats as numbers"
    },
    {
      "basis": "The readings below, typed as literals, and the family rule of FN-ROUND-002 over the recorded ROUND rows.",
      "documentation": null,
      "evidence": [
        {
          "commit": "282f03144b9eb01b63207c1fecd74a726ad6e85f",
          "locator": null,
          "note": "the literal readings",
          "path": "crates/calc-func/tests/captures/cfunc_m3_2/oracle.capture.json",
          "repository": "DnaCalc"
        },
        {
          "commit": "b5d84a80a5a4640eca9ce04f232c0bc115503f34",
          "locator": null,
          "note": "the fifteen-digit reading",
          "path": "content/notes/evidence/2026-11-04/rounding-EVIDENCE.md",
          "repository": "ExcelFunctionsHandbook"
        }
      ],
      "functions": [
        "FUNC.ROUND"
      ],
      "inferred": "That every tie follows this is inferred from the rule's fit to the recorded rows; the literal ties read directly are the ones below.",
      "kind": "excel-differs-from-math",
      "note_id": "FN-ROUND-004",
      "open": [],
      "recorded_on": "2026-11-04",
      "repros": [
        {
          "call": "=ROUND(2.5,0)",
          "correct": null,
          "excel": {
            "bits": "0x4008000000000000",
            "display": "3",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "282f03144b9eb01b63207c1fecd74a726ad6e85f",
            "locator": "sheet rounding_boundaries, row 8, column 4",
            "note": null,
            "path": "crates/calc-func/tests/captures/cfunc_m3_2/oracle.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=ROUND(-2.5,0)",
          "correct": null,
          "excel": {
            "bits": "0xc008000000000000",
            "display": "-3",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "282f03144b9eb01b63207c1fecd74a726ad6e85f",
            "locator": "sheet rounding_boundaries, row 9, column 4",
            "note": null,
            "path": "crates/calc-func/tests/captures/cfunc_m3_2/oracle.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=ROUND(2.675,2)",
          "correct": {
            "bits": "0x40055c28f5c28f5c",
            "display": "2.67",
            "how": "The stored value lies below the decimal tie, so the nearest multiple of 0.01 is the lower one; nearest binary64.",
            "kind": "number"
          },
          "excel": {
            "bits": "0x400570a3d70a3d71",
            "display": "2.68",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "282f03144b9eb01b63207c1fecd74a726ad6e85f",
            "locator": "sheet rounding_boundaries, row 19, column 4",
            "note": null,
            "path": "crates/calc-func/tests/captures/cfunc_m3_2/oracle.capture.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "=ROUND(1.005,2)",
          "correct": {
            "bits": "0x3ff0000000000000",
            "display": "1",
            "how": "The stored value lies below the decimal tie, so the nearest multiple of 0.01 is the lower one; nearest binary64.",
            "kind": "number"
          },
          "excel": {
            "bits": "0x3ff028f5c28f5c29",
            "display": "1.01",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
          "source": {
            "commit": "282f03144b9eb01b63207c1fecd74a726ad6e85f",
            "locator": "sheet rounding_boundaries, row 21, column 4",
            "note": null,
            "path": "crates/calc-func/tests/captures/cfunc_m3_2/oracle.capture.json",
            "repository": "DnaCalc"
          }
        }
      ],
      "schema": "efh.function-note/v1",
      "statement": "A tie in ROUND goes away from zero, not to even: ROUND(2.5,0) is 3 and ROUND(-2.5,0) is -3. The tie is judged on the 15-digit reading of FN-ROUND-002, not on the stored value. So 1.005 and 2.675, whose binary64 values lie just below the decimal tie, count as ties: ROUND(1.005,2) is 1.01 and ROUND(2.675,2) is 2.68, where rounding the stored value would give 1 and 2.67.",
      "status": "measured",
      "title": "ROUND takes ties away from zero on the 15-digit reading, so 1.005 rounds up"
    }
  ],
  "schema": "efh.function-reference/v1",
  "section_order": [
    "what-it-does",
    "try-it",
    "quirks",
    "how-to-implement",
    "version-differences",
    "alternatives"
  ],
  "sections": {
    "alternatives": "\n[ROUNDDOWN](FUNC.ROUNDDOWN.md) truncates the decimal reading toward zero; [ROUNDUP](FUNC.ROUNDUP.md) rounds it away from zero. [MROUND](FUNC.MROUND.md) chooses a multiple. [INT](FUNC.INT.md) floors negatives; [TRUNC](FUNC.TRUNC.md) removes their fraction toward zero.\n\n\n\n\n",
    "how-to-implement": "\nThe current worksheet wrapper reads numeric arguments in order and flushes subnormal numeric operands to zero. Return zero for a zero `number` before finding its decimal exponent. The following steps start with a finite, nonzero admitted input. The [stored-arithmetic chapter](../model/09-staged-arithmetic.md) explains exact binary decoding and significand rounding.\n\nFirst construct the number’s fifteen-significant-digit **reading**. Extract the exact binary64 value and find its decimal exponent `e` by comparisons with exact powers of ten, so `10^e <= abs(x) < 10^(e+1)`. Put `s=14-e`. When `abs(s)<=27`, evaluate `abs(x)*10^s` (or `abs(x)/10^(-s)`) with a 64-bit significand and extended exponent range, rounding to nearest/even. **Do not store that scaled value to binary64 before the integer decision.** Round it to an integer: exact halves go down for ROUND’s reading, up for the directed functions’ readings. Retain the sign and the exact decimal value `integer*10^(-s)`.\n\nThis reading step is a measured reconstruction with a known counterexample even inside the stated scale range. For `abs(s)>27`, Excel’s scaling is still open; the current code falls back to exact binary64-to-decimal rounding to fifteen digits. That fallback is a candidate, not an identified Excel stage.\n\n1. Truncate `num_digits` toward zero, clamp to `[-2147483647,2147483647]`, and call the integer `D`.\n2. Compute `k=D+e+1` with signed 32-bit wrapping. A negative `k` returns zero; `k>=15` keeps the reading.\n3. Otherwise round the exact decimal reading at unit `10^(-D)`, choosing the larger magnitude at a half. Convert the resulting decimal to nearest binary64. Preserve the original input if its exact value equals the whole reading.\n4. A final subnormal result is flushed to zero. For decimal overflow, apply the [half-value and encoded-exponent rule](../model/09-staged-arithmetic.md#decimal-family-packing-exceptions). A host without the tagged worksheet-number representation must retain an explicit refusal.\n\nWorked: `x=-7.25` has `e=0`, `s=14`; its reading is exactly `-7.25`. For `D=1`, `k=2`. At unit `0.1` the magnitude is `72.5` units, so choose 73 and return the binary64 value for `-7.3`. For a count-overflow control, `ROUND(1.5,2147483647)` wraps `k` negative and returns zero on the recorded build.\n\n\n",
    "quirks": "\nThe recorded functions first read fifteen significant decimal digits. Asking to retain more digits can therefore change an input that mathematically needs no rounding. For example, the recorded `ROUND(-1594628480062905,14)` returns `-1594628480062900`. Huge digit counts have recorded integer-conversion behaviour rather than a simple “keep everything” rule. Near the normal-range boundary and overflow, worksheet publication needs separate handling.\n\n\nNear the largest finite input, the recorded decimal output can carry NaN bits while Excel classifies the cell as a number. The overflow model and its save/reopen behavior are separate from ordinary IEEE infinity publication. See the [packing rules and worked encodings](../model/09-staged-arithmetic.md#decimal-family-packing-exceptions).\n\n\n",
    "sources": "\n- [Microsoft: ROUND function](https://support.microsoft.com/en-us/excel/functions/round-function), opened 6 November 2026; syntax, documented argument rules and errors.\n- [DnaCalc implementation](https://github.com/DnaCalc/DnaCalc/blob/da3ecc4fb19a3a5529708c311d0e8f05688ac165/crates/calc-func/src/catalogue/rounding.rs); implementation steps and the limits identified in the text.\n- [Rounding research](../notes/evidence/2026-11-04/rounding-EVIDENCE.md): measured reading, count rules, overflow and remaining failures.\n\n",
    "try-it": "\n`=ROUND(-7.25,1)` returns `-7.3`; `=ROUND(725,-1)` returns `730`. A final half goes away from zero, including for negative values.\n\n\n",
    "version-differences": "The recorded environments below distinguish a reading from a same-input comparison. Counts describe captured inputs in each environment; overlapping captures and comparisons are not totals of unique worksheet calls.\n\n| Excel 16.0 build | Platform and CPU | Captured inputs |\n|---|---|---:|\n| 19929 | Windows, bitness not recorded, CPU not recorded | 135 |\n| 20430 | Windows, 64-bit, AMD Ryzen 7 4800H with Radeon Graphics | 4,071 |\n| 20430 | Windows, 64-bit, CPU not recorded | 32,874 |\n\nThe record contains no same-input comparison between these environments. Reading different inputs on different builds does not establish either a version change or cross-build agreement.\n\n[Recorded environments and comparison details](https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/5dc75391aa5125ccc5abdb095da85950980d6fd8/content/evidence/environments/FUNC.ROUND.json).\n\nRetained controls from the indexed captures:\n\n| Build and recorded CPU | Captured call or arguments | Excel result |\n|---|---|---|\n| 19929, CPU not recorded | [`=ROUND(-1.20410853043719857,0)`](https://github.com/DnaCalc/CalcFunc-Evidence/blob/4287ba192d2e3a7fd54671ea1cee1c34cb2e84e2/runs/W097-R-B-validation-cellref-module/comparisons/excel_sample_comparisons.jsonl.gz) | `-1.0` (`0xbff0000000000000`) |\n| 20430, AMD Ryzen 7 4800H with Radeon Graphics | [`ROUND(0.5,0)`](https://github.com/DnaCalc/CalcFunc-Evidence/blob/4287ba192d2e3a7fd54671ea1cee1c34cb2e84e2/cache/oracle-20430/build-20430/ROUND.jsonl.gz) | `1` (`0x3ff0000000000000`) |\n| 20430, CPU not recorded | [`ROUND(817094511.6142203,6)`](https://github.com/DnaCalc/CalcFunc-Evidence/blob/4287ba192d2e3a7fd54671ea1cee1c34cb2e84e2/runs/w111-directed-initial-discriminators-20260929/answers-round.json.gz) | `817094511.61422` (`0x41c859efb7ce9ec3`) |\n\nThese are earlier recorded answers, not new Excel runs or an additional cross-build comparison. The function JSON retains each source locator, exact argument bits where available, and input-route status. Call notation does not imply that captured binary64 values were entered as decimal formula literals.",
    "what-it-does": "\n`ROUND(number, num_digits)` rounds to the nearest decimal position, with final decimal halves away from zero. Positive digit counts address places after the decimal point, zero the integer position, and negative counts places to its left.\n\n\n"
  },
  "signature": {
    "display": "ROUND(number, num_digits)",
    "parameters": [
      {
        "description": null,
        "name": "number",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "num_digits",
        "optional": false,
        "repeats": false
      }
    ],
    "trailing_repeats": false
  },
  "sources": {
    "metadata": {
      "admission": {
        "label": "implemented",
        "reason": null
      },
      "arity": {
        "max": 2,
        "min": 2
      },
      "category": "Math and trigonometry functions",
      "classification": {
        "arg_preparation_profile": "ValuesOnlyPreAdapter",
        "coercion_lift_profile": "UnaryNumericScalarOnly",
        "determinism_class": "Deterministic",
        "error_collapse_profile": "None",
        "fec_dependency_profile": "None",
        "host_interaction_class": "None",
        "kernel_signature_class": "NumsToNum",
        "rich_value_usage": "RichBlind",
        "surface_fec_dependency_profile": "RefOnly",
        "thread_safety_class": "SafePure",
        "volatility_class": "NonVolatile"
      },
      "descriptions": {
        "long": null,
        "short": "Number rounded to a number of digits",
        "short_source": "dna-calc-own"
      },
      "docs": {
        "english_description": "Rounds a number to a specified number of digits",
        "microsoft_url": "https://support.microsoft.com/en-us/office/round-function-c018c5d8-40fb-4053-90b1-b3e7f61a213c"
      },
      "entry_kind": "built_in_function",
      "localized_family_names": null,
      "localized_names": [
        {
          "locale": "ar-SA",
          "name": "ROUND"
        },
        {
          "locale": "bg-BG",
          "name": "ROUND"
        },
        {
          "locale": "cs-CZ",
          "name": "ZAOKROUHLIT"
        },
        {
          "locale": "da-DK",
          "name": "AFRUND"
        },
        {
          "locale": "de-DE",
          "name": "ROUND"
        },
        {
          "locale": "el-GR",
          "name": "ROUND"
        },
        {
          "locale": "en-AU",
          "name": "ROUND"
        },
        {
          "locale": "en-GB",
          "name": "ROUND"
        },
        {
          "locale": "en-US",
          "name": "ROUND"
        },
        {
          "locale": "es-ES",
          "name": "REDONDEAR"
        },
        {
          "locale": "et-EE",
          "name": "ROUND"
        },
        {
          "locale": "fi-FI",
          "name": "KIERROS"
        },
        {
          "locale": "fr-FR",
          "name": "ARRONDI*"
        },
        {
          "locale": "he-IL",
          "name": "ROUND"
        },
        {
          "locale": "hr-HR",
          "name": "ROUND"
        },
        {
          "locale": "hu-HU",
          "name": "KEREKÍTÉS"
        },
        {
          "locale": "id-ID",
          "name": "ROUND"
        },
        {
          "locale": "it-IT",
          "name": "ROUND"
        },
        {
          "locale": "ja-JP",
          "name": "ROUND"
        },
        {
          "locale": "ko-KR",
          "name": "ROUND"
        },
        {
          "locale": "lt-LT",
          "name": "ROUND"
        },
        {
          "locale": "lv-LV",
          "name": "ROUND"
        },
        {
          "locale": "nb-NO",
          "name": "AVRUND"
        },
        {
          "locale": "nl-NL",
          "name": "RONDE"
        },
        {
          "locale": "pl-PL",
          "name": "ZAOKR"
        },
        {
          "locale": "pt-BR",
          "name": "ROUND"
        },
        {
          "locale": "pt-PT",
          "name": "ARRED"
        },
        {
          "locale": "ro-RO",
          "name": "ROUND"
        },
        {
          "locale": "ru-RU",
          "name": "ОКРУГЛ"
        },
        {
          "locale": "sk-SK",
          "name": "KOLO"
        },
        {
          "locale": "sl-SI",
          "name": "ROUND"
        },
        {
          "locale": "sr-Latn-RS",
          "name": "ROUND"
        },
        {
          "locale": "sv-SE",
          "name": "AVRUNDA"
        },
        {
          "locale": "th-TH",
          "name": "ROUND"
        },
        {
          "locale": "tr-TR",
          "name": "YUVARLA"
        },
        {
          "locale": "uk-UA",
          "name": "ROUND"
        },
        {
          "locale": "vi-VN",
          "name": "ROUND"
        },
        {
          "locale": "zh-CN",
          "name": "ROUND"
        },
        {
          "locale": "zh-HK",
          "name": "ROUND"
        },
        {
          "locale": "zh-TW",
          "name": "ROUND"
        }
      ],
      "signature": {
        "display": "ROUND(number, num_digits)",
        "parameters": [
          {
            "description": null,
            "name": "number",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "num_digits",
            "optional": false,
            "repeats": false
          }
        ],
        "trailing_repeats": false
      },
      "surface_name": "ROUND",
      "version_marker": null,
      "xlcall": {
        "code": "27",
        "symbol": "xlfRound"
      }
    },
    "microsoft": "https://support.microsoft.com/en-us/office/round-function-c018c5d8-40fb-4053-90b1-b3e7f61a213c"
  },
  "try_it": {
    "formula": "=ROUND(-7.25,1)"
  },
  "url": "https://handbook.dnacalc.com/functions/ROUND.html",
  "variants": [],
  "versions": [
    {
      "behaviour": "ROUND(-112500000000000, 2147483635) returned 0 (0x0000000000000000). ROUND(-112500000000000, 2147483617) returned -112500000000000 (0xc2d9945ca2620000). Inputs were supplied through cells using Value2. These are controls from this environment, not a same-input comparison with another build.",
      "excel_build": "16.0 build 20430",
      "observations": [
        {
          "call": "ROUND(-112500000000000, 2147483635)",
          "excel": {
            "bits": "0x0000000000000000",
            "display": "0",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "number",
              "value": {
                "bits": "0xc2d9945ca2620000",
                "display": "-112500000000000",
                "kind": "number"
              }
            },
            {
              "name": "num_digits",
              "value": {
                "bits": "0x41dffffffcc00000",
                "display": "2147483635",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0 build 20430, Windows 64-bit, CPU not recorded in this capture"
        },
        {
          "call": "ROUND(-112500000000000, 2147483617)",
          "excel": {
            "bits": "0xc2d9945ca2620000",
            "display": "-112500000000000",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "number",
              "value": {
                "bits": "0xc2d9945ca2620000",
                "display": "-112500000000000",
                "kind": "number"
              }
            },
            {
              "name": "num_digits",
              "value": {
                "bits": "0x41dffffff8400000",
                "display": "2147483617",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0 build 20430, Windows 64-bit, CPU not recorded in this capture"
        }
      ],
      "platform": "Windows 64-bit, CPU not recorded in this capture",
      "sources": [
        "https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/3345a87/content/notes/FN-ROUND-001.json"
      ]
    },
    {
      "behaviour": "ROUND(-1594628480062905, 14) returned -1594628480062900 (0xc316a939806956d0). Inputs were supplied through cells using Value2. These are controls from this environment, not a same-input comparison with another build.",
      "excel_build": "16.0 build 20430",
      "observations": [
        {
          "call": "ROUND(-1594628480062905, 14)",
          "excel": {
            "bits": "0xc316a939806956d0",
            "display": "-1594628480062900",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "number",
              "value": {
                "bits": "0xc316a939806956e4",
                "display": "-1594628480062905",
                "kind": "number"
              }
            },
            {
              "name": "num_digits",
              "value": {
                "bits": "0x402c000000000000",
                "display": "14",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0 build 20430, Windows 64-bit, AMD Ryzen 7 4800H"
        }
      ],
      "platform": "Windows 64-bit, AMD Ryzen 7 4800H",
      "sources": [
        "https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/3345a87/content/notes/FN-ROUND-002.json"
      ]
    },
    {
      "behaviour": "ROUND(1.7976931348623157E+308, 0) returned NaN bit pattern, shown as 1.8E+308 (0x7ff000000000000a). ROUND(1.7976931348623157E+308, -307) returned NaN bit pattern, shown as 1.8E+308 (0x7ff005419221015d). 1 further recorded control is attached. Inputs were supplied through cells using Value2. These are controls from this environment, not a same-input comparison with another build.",
      "excel_build": "16.0 build 20527",
      "observations": [
        {
          "call": "ROUND(1.7976931348623157E+308, 0)",
          "excel": {
            "bits": "0x7ff000000000000a",
            "display": "NaN bit pattern, shown as 1.8E+308",
            "kind": "nonfinite"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "number",
              "value": {
                "bits": "0x7fefffffffffffff",
                "display": "1.7976931348623157e+308",
                "kind": "number"
              }
            },
            {
              "name": "num_digits",
              "value": {
                "bits": "0x0000000000000000",
                "display": "0",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0 build 20527, Windows; bitness and CPU not recorded in this reading"
        },
        {
          "call": "ROUND(1.7976931348623157E+308, -307)",
          "excel": {
            "bits": "0x7ff005419221015d",
            "display": "NaN bit pattern, shown as 1.8E+308",
            "kind": "nonfinite"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "number",
              "value": {
                "bits": "0x7fefffffffffffff",
                "display": "1.7976931348623157e+308",
                "kind": "number"
              }
            },
            {
              "name": "num_digits",
              "value": {
                "bits": "0xc073300000000000",
                "display": "-307",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0 build 20527, Windows; bitness and CPU not recorded in this reading"
        },
        {
          "call": "ROUND(1.7976931348623157E+308, -308)",
          "excel": {
            "bits": "0x7ff1ccf385ebc8a0",
            "display": "NaN bit pattern, shown as 2E+308",
            "kind": "nonfinite"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "number",
              "value": {
                "bits": "0x7fefffffffffffff",
                "display": "1.7976931348623157e+308",
                "kind": "number"
              }
            },
            {
              "name": "num_digits",
              "value": {
                "bits": "0xc073400000000000",
                "display": "-308",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0 build 20527, Windows; bitness and CPU not recorded in this reading"
        }
      ],
      "platform": "Windows; bitness and CPU not recorded in this reading",
      "sources": [
        "https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/3345a87/content/notes/FN-ROUND-003.json"
      ]
    },
    {
      "behaviour": "=ROUND(2.5,0) returned 3 (0x4008000000000000). =ROUND(-2.5,0) returned -3 (0xc008000000000000). 2 further recorded controls are attached. Inputs were supplied through formula literals. These are controls from this environment, not a same-input comparison with another build.",
      "excel_build": "16.0.20527.20088",
      "observations": [
        {
          "call": "=ROUND(2.5,0)",
          "excel": {
            "bits": "0x4008000000000000",
            "display": "3",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=ROUND(-2.5,0)",
          "excel": {
            "bits": "0xc008000000000000",
            "display": "-3",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=ROUND(2.675,2)",
          "excel": {
            "bits": "0x400570a3d70a3d71",
            "display": "2.68",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        },
        {
          "call": "=ROUND(1.005,2)",
          "excel": {
            "bits": "0x3ff028f5c28f5c29",
            "display": "1.01",
            "kind": "number"
          },
          "input_route": "formula-literal",
          "inputs": [],
          "recorded_in": "Excel 16.0.20527.20088 Current Channel, Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA"
        }
      ],
      "platform": "Windows 64-bit (NT 10.0.26200), x86-64, AMD Ryzen 7 4800H, en-ZA",
      "sources": [
        "https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/3345a87/content/notes/FN-ROUND-004.json"
      ]
    },
    {
      "behaviour": "135 captured inputs are indexed for this environment. Capture dates are not recorded. This is a reading count, not a comparison with another build. Retained control =ROUND(-1.20410853043719857,0) returned -1.0 (0xbff0000000000000). The selected archive row does not record its input plumbing; no input route is inferred.",
      "excel_build": "16.0 build 19929",
      "observations": [
        {
          "call": "=ROUND(-1.20410853043719857,0)",
          "excel": {
            "bits": "0xbff0000000000000",
            "display": "-1.0",
            "kind": "number"
          },
          "input_route": "not-recorded",
          "inputs": [],
          "recorded_in": "Excel 16.0 build 19929, Windows, bitness not recorded, CPU not recorded.",
          "source": {
            "commit": "4287ba192d2e3a7fd54671ea1cee1c34cb2e84e2",
            "locator": "BSE-000000540",
            "path": "runs/W097-R-B-validation-cellref-module/comparisons/excel_sample_comparisons.jsonl.gz",
            "repository": "CalcFunc-Evidence"
          }
        }
      ],
      "platform": "Windows, bitness not recorded, CPU not recorded",
      "sources": [
        "https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/5dc75391aa5125ccc5abdb095da85950980d6fd8/content/evidence/environments/FUNC.ROUND.json",
        "https://github.com/DnaCalc/CalcFunc-Evidence/blob/4287ba192d2e3a7fd54671ea1cee1c34cb2e84e2/runs/W097-R-B-validation-cellref-module/comparisons/excel_sample_comparisons.jsonl.gz"
      ]
    },
    {
      "behaviour": "4,071 captured inputs are indexed for this environment. Capture dates: 2026-09-25 to 2026-09-25. This is a reading count, not a comparison with another build. Retained control ROUND(0.5,0) returned 1 (0x3ff0000000000000). The selected archive row does not record its input plumbing; no input route is inferred.",
      "excel_build": "16.0 build 20430",
      "observations": [
        {
          "call": "ROUND(0.5,0)",
          "excel": {
            "bits": "0x3ff0000000000000",
            "display": "1",
            "kind": "number"
          },
          "input_route": "not-recorded",
          "inputs": [
            {
              "name": "argument1",
              "value": {
                "bits": "0x3fe0000000000000",
                "display": "0.5",
                "kind": "number"
              }
            },
            {
              "name": "argument2",
              "value": {
                "bits": "0x0000000000000000",
                "display": "0",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0 build 20430, Windows, 64-bit, AMD Ryzen 7 4800H with Radeon Graphics.",
          "source": {
            "commit": "4287ba192d2e3a7fd54671ea1cee1c34cb2e84e2",
            "locator": "ROUND|0x3fe0000000000000|0x0000000000000000",
            "path": "cache/oracle-20430/build-20430/ROUND.jsonl.gz",
            "repository": "CalcFunc-Evidence"
          }
        }
      ],
      "platform": "Windows, 64-bit, AMD Ryzen 7 4800H with Radeon Graphics",
      "sources": [
        "https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/5dc75391aa5125ccc5abdb095da85950980d6fd8/content/evidence/environments/FUNC.ROUND.json",
        "https://github.com/DnaCalc/CalcFunc-Evidence/blob/4287ba192d2e3a7fd54671ea1cee1c34cb2e84e2/cache/oracle-20430/build-20430/ROUND.jsonl.gz"
      ]
    },
    {
      "behaviour": "32,874 captured inputs are indexed for this environment. Capture dates: 2026-09-29 to 2026-09-29. This is a reading count, not a comparison with another build. Retained control ROUND(817094511.6142203,6) returned 817094511.61422 (0x41c859efb7ce9ec3). The capture specifies exact-double bulk Value2 cell input.",
      "excel_build": "16.0 build 20430",
      "observations": [
        {
          "call": "ROUND(817094511.6142203,6)",
          "excel": {
            "bits": "0x41c859efb7ce9ec3",
            "display": "817094511.61422",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "argument1",
              "value": {
                "bits": "0x41c859efb7ce9ec5",
                "display": "817094511.6142203",
                "kind": "number"
              }
            },
            {
              "name": "argument2",
              "value": {
                "bits": "0x4018000000000000",
                "display": "6",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0 build 20430, Windows, 64-bit, CPU not recorded.",
          "source": {
            "commit": "4287ba192d2e3a7fd54671ea1cee1c34cb2e84e2",
            "locator": "w111initialdiscriminator-ROUND-01242",
            "path": "runs/w111-directed-initial-discriminators-20260929/answers-round.json.gz",
            "repository": "CalcFunc-Evidence"
          }
        }
      ],
      "platform": "Windows, 64-bit, CPU not recorded",
      "sources": [
        "https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/5dc75391aa5125ccc5abdb095da85950980d6fd8/content/evidence/environments/FUNC.ROUND.json",
        "https://github.com/DnaCalc/CalcFunc-Evidence/blob/4287ba192d2e3a7fd54671ea1cee1c34cb2e84e2/runs/w111-directed-initial-discriminators-20260929/answers-round.json.gz"
      ]
    }
  ]
}