{
  "category": "Financial functions",
  "display_name": "RECEIVED",
  "entry_kind": "built_in_function",
  "eval_api": {
    "method": "POST",
    "url": "https://handbook.dnacalc.com/api/eval"
  },
  "function_id": "FUNC.RECEIVED",
  "implementation_state": {
    "answer_bank": {
      "excel_builds": [
        "20430"
      ],
      "larger_numeric": 0,
      "last_bit": 0,
      "matched": 2400,
      "other_mismatch": 0,
      "refused": 0,
      "rows": 2400,
      "unread": 0,
      "worst_ulp": 0
    },
    "detail": "Recorded: 2,400 in the answer bank and 46 workbook cells.",
    "dnacalc_commit": "9e1884369a678158dd82d3d74188daf986995e87",
    "in_catalogue": true,
    "state": "matches",
    "state_label": "Matches every recorded Excel answer",
    "summary": "Matches all 2,446 recorded answers",
    "workbook_corpus": {
      "cells": 46,
      "matched": 46
    }
  },
  "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/bonds.rs#L199-L202",
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/ported/discount_bill_yearfrac_family.rs#L231-L259"
      ],
      "repository": "https://github.com/DnaCalc/DnaCalc",
      "shared_code": [
        "catalogue/bonds::basis",
        "catalogue/bonds::bill_out",
        "catalogue/financial::date_1900",
        "locale::days_from_civil",
        "locale::civil_from_days",
        "locale::excel_serial_from_ymd",
        "locale::ymd_from_excel_serial",
        "ported/day_count_common::days_in_month",
        "ported/day_count_common::us_30_360",
        "ported/day_count_common::real_days_in_year",
        "ported/day_count_common::excel_actual_actual_year",
        "ported/discount_bill_yearfrac_family::max_excel_serial",
        "ported/discount_bill_yearfrac_family::parse_basis",
        "ported/discount_bill_yearfrac_family::parse_date_serial",
        "ported/discount_bill_yearfrac_family::actual_days",
        "ported/discount_bill_yearfrac_family::days360_us",
        "ported/discount_bill_yearfrac_family::days360_eu",
        "ported/discount_bill_yearfrac_family::security_days_and_year",
        "ported/discount_bill_yearfrac_family::map_discount_bill_yearfrac_error_to_ws",
        "ported/excel_numeric::binary_with",
        "ported/excel_numeric::excel_x87_sub",
        "ported/excel_numeric::excel_x87_mul",
        "ported/excel_numeric::excel_x87_div",
        "ported/excel_numeric/x87::mul",
        "ported/excel_numeric/x87::sub",
        "ported/excel_numeric/x87::div"
      ],
      "source": "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/bonds.rs#L199-L202",
      "state": "matches",
      "suite": null,
      "summary": "Matches all 2,446 recorded answers"
    }
  ],
  "json_url": "https://handbook.dnacalc.com/api/functions/FUNC.RECEIVED.json",
  "name": "RECEIVED",
  "notes": [
    {
      "basis": "2,400 of 2,400 rows for each function with stored precision-64 arithmetic. Plain binary64 matches 2,398 to 2,399 of the same rows, so few rows separate the two; keeping intermediates in 80-bit registers without stores loses 475 to 1,335.",
      "documentation": null,
      "evidence": [
        {
          "commit": "26bb1800d3b349e44d594bed5f8bb589b528ef10",
          "locator": "lines 435-466",
          "note": "recorded answers pinned",
          "path": "crates/calc-func/tests/f3_financial.rs",
          "repository": "DnaCalc"
        },
        {
          "commit": "f1774082865e3a5ab7dec27ead7aeebb73b078c2",
          "locator": "counts",
          "note": "stored-PC64 against other precisions",
          "path": "evidence/round23/security-1900-hard/summary.json",
          "repository": "DnaCalc-Research"
        },
        {
          "commit": "f1774082865e3a5ab7dec27ead7aeebb73b078c2",
          "locator": "recorded_completed_groups",
          "note": "18,040 of 18,040 outcomes",
          "path": "round23-result.json",
          "repository": "DnaCalc-Research"
        }
      ],
      "functions": [
        "FUNC.DISC",
        "FUNC.INTRATE",
        "FUNC.PRICEDISC",
        "FUNC.RECEIVED",
        "FUNC.TBILLYIELD"
      ],
      "inferred": null,
      "kind": "bit-matching-detail",
      "note_id": "FN-DISC-001",
      "open": [],
      "recorded_on": "2026-11-04",
      "repros": [
        {
          "call": "DISC(37655, 38261, 94.87631295104353, 102.73579504052532, 3)",
          "correct": {
            "bits": "0x3fa79784b622b019",
            "display": "0.04607786868413672",
            "how": "Exact rational value of the same formula from the binary64 inputs, correctly rounded.",
            "kind": "number"
          },
          "excel": {
            "bits": "0x3fa79784b622b014",
            "display": "0.046077868684136686",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "settlement",
              "value": {
                "bits": "0x40e262e000000000",
                "display": "37655",
                "kind": "number"
              }
            },
            {
              "name": "maturity",
              "value": {
                "bits": "0x40e2aea000000000",
                "display": "38261",
                "kind": "number"
              }
            },
            {
              "name": "pr",
              "value": {
                "bits": "0x4057b81582ea72c4",
                "display": "94.87631295104353",
                "kind": "number"
              }
            },
            {
              "name": "redemption",
              "value": {
                "bits": "0x4059af174414e760",
                "display": "102.73579504052532",
                "kind": "number"
              }
            },
            {
              "name": "basis",
              "value": {
                "bits": "0x4008000000000000",
                "display": "3",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0 build 20430, Windows 64-bit, AMD Ryzen 7 4800H",
          "source": {
            "commit": "4d5320dfdc385354469b4d506153357bb932ab08",
            "locator": "line 1458, key DISC|0x40e262e000000000|0x40e2aea000000000|0x4057b81582ea72c4|0x4059af174414e760|0x4008000000000000",
            "note": null,
            "path": "cache/oracle-20430/build-20430/DISC.jsonl.gz",
            "repository": "CalcFunc-Evidence"
          }
        },
        {
          "call": "TBILLYIELD(47701, 47702, 2.279784366464575)",
          "correct": {
            "bits": "0x40ce237bcaff5178",
            "display": "15430.967132487087",
            "how": "Exact rational value of the same formula from the binary64 inputs, correctly rounded.",
            "kind": "number"
          },
          "excel": {
            "bits": "0x40ce237bcaff517a",
            "display": "15430.96713248709",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "settlement",
              "value": {
                "bits": "0x40e74aa000000000",
                "display": "47701",
                "kind": "number"
              }
            },
            {
              "name": "maturity",
              "value": {
                "bits": "0x40e74ac000000000",
                "display": "47702",
                "kind": "number"
              }
            },
            {
              "name": "pr",
              "value": {
                "bits": "0x40023cff95ff2def",
                "display": "2.279784366464575",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0 build 20430, Windows 64-bit, AMD Ryzen 7 4800H",
          "source": {
            "commit": "4d5320dfdc385354469b4d506153357bb932ab08",
            "locator": "line 413, key TBILLYIELD|0x40e74aa000000000|0x40e74ac000000000|0x40023cff95ff2def",
            "note": null,
            "path": "cache/oracle-20430/build-20430/TBILLYIELD.jsonl.gz",
            "repository": "CalcFunc-Evidence"
          }
        },
        {
          "call": "INTRATE(58548, 58599, 428532.13421818457, 6.805737049418593, 0)",
          "correct": null,
          "excel": {
            "bits": "0xc01cccaed31c9766",
            "display": "-7.199885653133469",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "settlement",
              "value": {
                "bits": "0x40ec968000000000",
                "display": "58548",
                "kind": "number"
              }
            },
            {
              "name": "maturity",
              "value": {
                "bits": "0x40ec9ce000000000",
                "display": "58599",
                "kind": "number"
              }
            },
            {
              "name": "investment",
              "value": {
                "bits": "0x411a27d089707de5",
                "display": "428532.13421818457",
                "kind": "number"
              }
            },
            {
              "name": "redemption",
              "value": {
                "bits": "0x401b39132211b6ad",
                "display": "6.805737049418593",
                "kind": "number"
              }
            },
            {
              "name": "basis",
              "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 2326, key INTRATE|0x40ec968000000000|0x40ec9ce000000000|0x411a27d089707de5|0x401b39132211b6ad|0x0000000000000000",
            "note": null,
            "path": "cache/oracle-20430/build-20430/INTRATE.jsonl.gz",
            "repository": "CalcFunc-Evidence"
          }
        }
      ],
      "schema": "efh.function-note/v1",
      "statement": "With B the year basis and D the day count, Excel evaluates DISC = (1 - pr/red) * (B/D); INTRATE = ((red - inv)/inv) * (B/D); RECEIVED = inv / (1 - (disc*D)/B); PRICEDISC = red - ((disc*red)*D)/B; TBILLYIELD = ((100 - pr)/pr) * (360/D), each + - * / taken from the x87 unit at precision 64 and stored to binary64. Results can sit several units from the exact value: the DISC row below is 5 units below it.",
      "status": "measured",
      "title": "The discount-security functions run a fixed formula order on the x87 unit"
    },
    {
      "basis": "19 YEARFRAC readings around serial 60 and the 1904, 2000 and 2004 leap days, 35 readings with serial 0 on all five bases, and 3 readings each from five financial functions.",
      "documentation": null,
      "evidence": [
        {
          "commit": "c4c5dde7e2dcf735d2849835fc49769e2ab67ba7",
          "locator": null,
          "note": "the leap-day test as implemented",
          "path": "crates/calc-func/src/ported/day_count_common.rs",
          "repository": "DnaCalc"
        },
        {
          "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
          "locator": "delivered_scalar_readings_follow_the_application_route",
          "note": "recorded answers pinned",
          "path": "apps/dna-onecalc/tests/acceptance.rs",
          "repository": "DnaCalc"
        },
        {
          "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
          "locator": null,
          "note": "87 recorded readings",
          "path": "crates/calc-func/tests/captures/fn4_questions/YEARFRAC.reading.json",
          "repository": "DnaCalc"
        }
      ],
      "functions": [
        "FUNC.ACCRINTM",
        "FUNC.DISC",
        "FUNC.INTRATE",
        "FUNC.PRICEDISC",
        "FUNC.RECEIVED",
        "FUNC.YEARFRAC"
      ],
      "inferred": null,
      "kind": "quirk",
      "note_id": "FN-YEARFRAC-001",
      "open": [
        "An argument left empty in the call, as in YEARFRAC(,5), has not been read."
      ],
      "recorded_on": "2026-11-04",
      "repros": [
        {
          "call": "YEARFRAC(59, 60, 1)",
          "correct": null,
          "excel": {
            "bits": "0x3f66719f3601671a",
            "display": "0.0027397260273972603",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "start_date",
              "value": {
                "bits": "0x404d800000000000",
                "display": "59",
                "kind": "number"
              }
            },
            {
              "name": "end_date",
              "value": {
                "bits": "0x404e000000000000",
                "display": "60",
                "kind": "number"
              }
            },
            {
              "name": "basis",
              "value": {
                "bits": "0x3ff0000000000000",
                "display": "1",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0.20527.20088, Windows, bitness and CPU not recorded in this reading file",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "fn7-YEARFRAC-fictitious-leap-day-3",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/YEARFRAC.reading.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "YEARFRAC(1520, 1521, 1)",
          "correct": null,
          "excel": {
            "bits": "0x3f6661ec6a5122f9",
            "display": "0.00273224043715847",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "start_date",
              "value": {
                "bits": "0x4097c00000000000",
                "display": "1520",
                "kind": "number"
              }
            },
            {
              "name": "end_date",
              "value": {
                "bits": "0x4097c40000000000",
                "display": "1521",
                "kind": "number"
              }
            },
            {
              "name": "basis",
              "value": {
                "bits": "0x3ff0000000000000",
                "display": "1",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0.20527.20088, Windows, bitness and CPU not recorded in this reading file",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "fn7-YEARFRAC-fictitious-leap-day-9",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/YEARFRAC.reading.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "YEARFRAC(0, 5, 0)",
          "correct": null,
          "excel": {
            "bits": "0x3f8c71c71c71c71c",
            "display": "0.013888888888888888",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "start_date",
              "value": {
                "bits": "0x0000000000000000",
                "display": "0",
                "kind": "number"
              }
            },
            {
              "name": "end_date",
              "value": {
                "bits": "0x4014000000000000",
                "display": "5",
                "kind": "number"
              }
            },
            {
              "name": "basis",
              "value": {
                "bits": "0x0000000000000000",
                "display": "0",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0.20527.20088, Windows, bitness and CPU not recorded in this reading file",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "fn7-YEARFRAC-calendar-zero-11",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/YEARFRAC.reading.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "YEARFRAC(0, 60, 1)",
          "correct": null,
          "excel": {
            "bits": "0x3fc50a8542a150a8",
            "display": "0.1643835616438356",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "start_date",
              "value": {
                "bits": "0x0000000000000000",
                "display": "0",
                "kind": "number"
              }
            },
            {
              "name": "end_date",
              "value": {
                "bits": "0x404e000000000000",
                "display": "60",
                "kind": "number"
              }
            },
            {
              "name": "basis",
              "value": {
                "bits": "0x3ff0000000000000",
                "display": "1",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0.20527.20088, Windows, bitness and CPU not recorded in this reading file",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "fn7-YEARFRAC-fictitious-leap-day-1",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/YEARFRAC.reading.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "DISC(59, 60, 99, 100, 1)",
          "correct": null,
          "excel": {
            "bits": "0x400d33333333333a",
            "display": "3.650000000000003",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "settlement",
              "value": {
                "bits": "0x404d800000000000",
                "display": "59",
                "kind": "number"
              }
            },
            {
              "name": "maturity",
              "value": {
                "bits": "0x404e000000000000",
                "display": "60",
                "kind": "number"
              }
            },
            {
              "name": "pr",
              "value": {
                "bits": "0x4058c00000000000",
                "display": "99",
                "kind": "number"
              }
            },
            {
              "name": "redemption",
              "value": {
                "bits": "0x4059000000000000",
                "display": "100",
                "kind": "number"
              }
            },
            {
              "name": "basis",
              "value": {
                "bits": "0x3ff0000000000000",
                "display": "1",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0.20527.20088, Windows, bitness and CPU not recorded in this reading file",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "fn7-DISC-fictitious-leap-day-1",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/DISC.reading.json",
            "repository": "DnaCalc"
          }
        },
        {
          "call": "DISC(1520, 1521, 99, 100, 1)",
          "correct": null,
          "excel": {
            "bits": "0x400d47ae147ae14f",
            "display": "3.6600000000000033",
            "kind": "number"
          },
          "input_route": "cell-value2",
          "inputs": [
            {
              "name": "settlement",
              "value": {
                "bits": "0x4097c00000000000",
                "display": "1520",
                "kind": "number"
              }
            },
            {
              "name": "maturity",
              "value": {
                "bits": "0x4097c40000000000",
                "display": "1521",
                "kind": "number"
              }
            },
            {
              "name": "pr",
              "value": {
                "bits": "0x4058c00000000000",
                "display": "99",
                "kind": "number"
              }
            },
            {
              "name": "redemption",
              "value": {
                "bits": "0x4059000000000000",
                "display": "100",
                "kind": "number"
              }
            },
            {
              "name": "basis",
              "value": {
                "bits": "0x3ff0000000000000",
                "display": "1",
                "kind": "number"
              }
            }
          ],
          "recorded_in": "Excel 16.0.20527.20088, Windows, bitness and CPU not recorded in this reading file",
          "source": {
            "commit": "2d0eddcac86413014643af81d646581d54ba57bc",
            "locator": "fn7-DISC-fictitious-leap-day-2",
            "note": null,
            "path": "crates/calc-func/tests/captures/fn4_questions/DISC.reading.json",
            "repository": "DnaCalc"
          }
        }
      ],
      "schema": "efh.function-note/v1",
      "statement": "Excel's calendar holds a 29 February 1900, serial 60, that never existed. On basis 1 (actual/actual) it does not make 1900 a leap year: YEARFRAC(59,60,1) is 1/365, where the real 1904-02-29 gives YEARFRAC(1520,1521,1) = 1/366. Serial 0 is accepted as a date: YEARFRAC(0,5,0) is 5/360 and YEARFRAC(0,60,1) is 60/365. Reversed dates give the same answer as in order. ACCRINTM, DISC, INTRATE, PRICEDISC and RECEIVED take the same 365 and 366 on those dates: DISC(59,60,99,100,1) is about 3.65 and DISC(1520,1521,99,100,1) about 3.66.",
      "status": "measured",
      "title": "On basis 1 the fictitious 1900-02-29 is not a leap day, and YEARFRAC takes serial 0 as a date"
    }
  ],
  "schema": "efh.function-reference/v1",
  "section_order": [
    "what-it-does",
    "try-it",
    "quirks",
    "how-to-implement",
    "version-differences",
    "alternatives"
  ],
  "sections": {
    "alternatives": "\n### Relationships\n\n\n- **[DISC](FUNC.DISC.md)** — the inverse in the rate: `DISC(s, m, investment, RECEIVED(s, m,\n  investment, d, b), b)` returns `d` up to floating-point rounding. `DISC` documents its third\n  argument as a per-100 price, but it uses the two money arguments only as a ratio.\n- **[PRICEDISC](FUNC.PRICEDISC.md)** — the same relation solved for the price. `PRICEDISC` multiplies\n  by `(1 − d × T)` where `RECEIVED` divides by it. The two also differ at the far end:\n  `PRICEDISC` returns a negative price where `RECEIVED` returns `#NUM!`.\n- **[INTRATE](FUNC.INTRATE.md)** — the rate on the investment rather than on the redemption. It is\n  not `RECEIVED`'s rate, so `RECEIVED(s, m, investment, INTRATE(...), b)` does not reproduce the\n  redemption. Convert first with `d = r / (1 + r × T)`, or compute `investment × (1 + r × T)`.\n- **[YEARFRAC](FUNC.YEARFRAC.md)** — the year fraction on its own, and the quickest way to separate a\n  calendar question from a rate question.\n- **`TBILLPRICE`** — the nearest T-bill relative, with price rather than redemption as the unknown.\n\n\n",
    "how-to-implement": "\n### Numerical notes\n\n**Near the pole.** When `d × T` is close to 1 the subtraction in the denominator cancels, and the\nresult inherits a large relative error. This is intrinsic to the quantity: a small change in\n`discount` moves the answer by a large amount, in any arrangement of the arithmetic. The\n`#NUM!` boundary also depends on rounding at that point, so an input sitting exactly on it can fall\neither way between implementations that order the operations differently.\n\n**The year length at basis 1.** Microsoft says only that `B` is the number of days in the year.\nReading `B` back from the 696 numeric basis 1 rows gives one rule, and all 696 fit it to at least\nten significant figures:\n\n- for a span of at most one year, if both dates are in one calendar year, `B` is that year's\n  length; otherwise `B` is 366 if a 29 February lies in the span and 365 if not;\n- for a span of more than one year, `B` is the average length of the calendar years from the\n  settlement year to the maturity year, both included.\n\nThe same rule fits [PRICEDISC](FUNC.PRICEDISC.md), whose page gives two worked spans. The reference\nengine at commit `473efa3` accumulates a fraction of each calendar year against that year's own\nlength instead, which does not agree with these rows on spans that cross a year boundary. The notes\nbelow add the 1900 case: the fictitious 29 February does not make 1900 a leap year.\n\n**The 30/360 bases.** All numeric rows at bases 0 and 4 fit the standard US and European 30/360\ncounts.\n\n\n",
    "quirks": "\n### Result and edge cases\n\n\nReturns `Number`, in the units of `investment`.\n\n- **A pole at `d × T = 1`.** As the denominator falls towards zero the result grows without limit,\n  and past that point the formula would give a negative redemption. Excel refuses instead. In the\n  2,400 rows behind the notes below (Excel 16.0 build 20430, Windows 64-bit, AMD Ryzen 7 4800H), all\n  282 rows with `1 − d × D/B ≤ 0` return `#NUM!`, and all 2,118 rows with a positive denominator\n  return a number. Microsoft's page does not list this condition.\n- **A 10% discount rate reaches the pole at ten years.** The function is usable with long spans\n  only while `d × T` stays below 1, and well before that the answer stops being commercially\n  meaningful.\n- **The result is always greater than `investment`** for any admissible input, because `discount`\n  must be positive.\n- **`settlement ≥ maturity`** is documented as `#NUM!`, not a reversed reading.\n- **The fractional part of a date is dropped.** 195 of the rows carry a fractional date, and each\n  fits the integer day count.\n- Empty, missing and error arguments are expected to follow the shared call model; see\n  [The value universe](../model/01-value-universe.md). No reading records this for `RECEIVED`.\n\n\n\n### Errors\n\n\nAs documented on Microsoft's `RECEIVED` page, with what the recorded rows add:\n\n| Error | Condition | Source |\n|---|---|---|\n| `#VALUE!` | `settlement` or `maturity` is not a valid date | Documented; not measured |\n| `#NUM!` | `investment ≤ 0` or `discount ≤ 0` | Documented; not measured |\n| `#NUM!` | `basis < 0` or `basis > 4` | Documented; not measured |\n| `#NUM!` | `settlement ≥ maturity` | Documented; not measured |\n| `#NUM!` | `1 − discount × D/B ≤ 0` | Not documented; 282 of 282 rows |\n\nWhere documentation and behaviour differ, both are shown: the last row is behaviour Microsoft does\nnot mention. The rows contain no other error, so the first four are Microsoft's statements only.\n\n",
    "sources": "- Microsoft, \"RECEIVED function\" —\n  <https://support.microsoft.com/en-us/office/received-function-7a3f8b93-6611-4f81-8576-828312c9b5e5>\n  (syntax, argument meanings, the day-count basis table, the serial-date and truncation remarks, the\n  `#VALUE!` and `#NUM!` conditions, the wording of `DIM` and the worked example). The equation on\n  that page is an image and was not readable, so no formula here is sourced from it.\n- The function notes on this page, and the recorded Excel rows and readings their evidence lists\n  cite. The pole counts, the fractional-date count and the basis 1 year-length rule were read from\n  those 2,400 rows for this page and go beyond the notes' own text; they carry the same Excel build,\n  platform and CPU.\n- Handbook, [The value universe](../model/01-value-universe.md) and\n  [Coercion and lifting](../model/02-coercion-and-lifting.md).\n- Handbook, [Claim language and honesty](../model/06-claim-language.md) — the scoping rules this\n  page's claims are written under.\n- Handbook projections `data/functions/FUNC.RECEIVED.json` and\n  `data/presence/FUNC.RECEIVED.json` (arity, classification axes, implementing module and sibling\n  set).\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| 20430 | Windows, 64-bit, AMD Ryzen 7 4800H with Radeon Graphics | 2,400 |\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.RECEIVED.json).",
    "what-it-does": "\n`RECEIVED(settlement, maturity, investment, discount, [basis])` returns the **amount received at\nmaturity** for a fully invested security: one bought for `investment`, paying nothing in between,\nand quoted at the bank-discount rate `discount`.\n\nLet `T` be the year fraction from settlement to maturity under the chosen day-count `basis`, and\n`d` the discount rate. Bank discount says the price is the redemption less a charge on the\nredemption:\n\n    investment = received × (1 − d × T)\n\n`RECEIVED` solves that for the redemption:\n\n    received = investment / (1 − d × T)\n\nWith `B` the number of days in the year implied by the basis and `D` the day count from settlement\nto maturity, `T = D/B` and\n\n    RECEIVED = investment / (1 − discount × D / B)\n\nMicrosoft's page prints its equation as an image that could not be read. The expression above is\nthe one the notes below record from Excel's own answers.\n\n**The word \"discount\" is the point of this function.** The second input is a discount rate, charged\non the redemption. It is not an interest rate on the investment, and using one here does not give\nthe right answer. With an interest rate `r`, the amount received is `investment × (1 + r × T)`,\nwhich is an ordinary multiplication and needs no function. Over short spans the two are close\nenough to hide the mistake, and over long spans they are not.\n\nMicrosoft's example: settlement 15 February 2008, maturity 15 May 2008, investment 1,000,000,\ndiscount 5.75%, basis 2 (Actual/360). That is 90 days, so\n\n    1,000,000 / (1 − 0.0575 × 90/360) = 1,014,584.654…\n\nwhich matches the $1,014,584.65 Microsoft shows.\n\n\n\n### Arguments\n\n\n| Argument | Meaning | Default |\n|---|---|---|\n| `settlement` | The date the buyer purchases the security, after its issue date. Required. | — |\n| `maturity` | The date the security expires. Required. | — |\n| `investment` | The amount invested in the security. Required. | — |\n| `discount` | The security's discount rate, as a decimal fraction. Required. | — |\n| `basis` | The day-count basis. Optional. | 0 |\n\nThe documented basis values are the standard five, as on the [DISC](FUNC.DISC.md) page: `0` or\nomitted = US (NASD) 30/360, `1` = Actual/actual, `2` = Actual/360, `3` = Actual/365, `4` = European\n30/360. Dates and `basis` are documented as truncated to integers.\n\n**`investment` is an amount, not a per-100 price.** The result is proportional to it and is in the\nsame units, so a per-100 price returns a per-100 redemption. There is no redemption argument to\nkeep consistent, unlike [DISC](FUNC.DISC.md) and [INTRATE](FUNC.INTRATE.md).\n\n**There is no issue date, whatever the page says.** Microsoft's page defines its day count `DIM` as\nthe days from *issue* to maturity, and its example labels the first date a settlement (issue) date.\nThe function has no issue argument. Every numeric row behind the notes below fits a count from\n`settlement`.\n\nNumeric coercion of the argument slots follows the shared call model; see\n[Coercion and lifting](../model/02-coercion-and-lifting.md).\n\n\n"
  },
  "signature": {
    "display": "RECEIVED(settlement, maturity, investment, discount, [basis])",
    "parameters": [
      {
        "description": null,
        "name": "settlement",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "maturity",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "investment",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "discount",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "basis",
        "optional": true,
        "repeats": false
      }
    ],
    "trailing_repeats": false
  },
  "sources": {
    "metadata": {
      "admission": {
        "label": "implemented",
        "reason": null
      },
      "arity": {
        "max": 5,
        "min": 4
      },
      "category": "Financial functions",
      "classification": {
        "arg_preparation_profile": "ValuesOnlyPreAdapter",
        "coercion_lift_profile": "Custom",
        "determinism_class": "Deterministic",
        "error_collapse_profile": "None",
        "fec_dependency_profile": "None",
        "host_interaction_class": "None",
        "kernel_signature_class": "Custom",
        "rich_value_usage": "RichBlind",
        "surface_fec_dependency_profile": "None",
        "thread_safety_class": "SafePure",
        "volatility_class": "NonVolatile"
      },
      "descriptions": {
        "long": null,
        "short": "Redemption amount of a security bought at a price and held to maturity at a discount rate",
        "short_source": "dna-calc-own"
      },
      "docs": {
        "english_description": "Returns the amount received at maturity for a fully invested security",
        "microsoft_url": "https://support.microsoft.com/en-us/office/received-function-7a3f8b93-6611-4f81-8576-828312c9b5e5"
      },
      "entry_kind": "built_in_function",
      "localized_family_names": null,
      "localized_names": [
        {
          "locale": "ar-SA",
          "name": "RECEIVED"
        },
        {
          "locale": "bg-BG",
          "name": "RECEIVED"
        },
        {
          "locale": "cs-CZ",
          "name": "RECEIVED"
        },
        {
          "locale": "da-DK",
          "name": "MODTAGET.VED.UDLØB"
        },
        {
          "locale": "de-DE",
          "name": "RECEIVED"
        },
        {
          "locale": "el-GR",
          "name": "RECEIVED"
        },
        {
          "locale": "en-AU",
          "name": "RECEIVED"
        },
        {
          "locale": "en-GB",
          "name": "RECEIVED"
        },
        {
          "locale": "en-US",
          "name": "RECEIVED"
        },
        {
          "locale": "es-ES",
          "name": "CANTIDAD.RECIBIDA"
        },
        {
          "locale": "et-EE",
          "name": "RECEIVED"
        },
        {
          "locale": "fi-FI",
          "name": "VASTAANOTETTU"
        },
        {
          "locale": "fr-FR",
          "name": "VALEUR.NOMINALE*"
        },
        {
          "locale": "he-IL",
          "name": "RECEIVED"
        },
        {
          "locale": "hr-HR",
          "name": "RECEIVED"
        },
        {
          "locale": "hu-HU",
          "name": "KAPOTT"
        },
        {
          "locale": "id-ID",
          "name": "RECEIVED"
        },
        {
          "locale": "it-IT",
          "name": "RECEIVED"
        },
        {
          "locale": "ja-JP",
          "name": "RECEIVED"
        },
        {
          "locale": "ko-KR",
          "name": "RECEIVED"
        },
        {
          "locale": "lt-LT",
          "name": "RECEIVED"
        },
        {
          "locale": "lv-LV",
          "name": "RECEIVED"
        },
        {
          "locale": "nb-NO",
          "name": "MOTTATT"
        },
        {
          "locale": "nl-NL",
          "name": "ONTVANGEN"
        },
        {
          "locale": "pl-PL",
          "name": "KWOTA.WYKUP"
        },
        {
          "locale": "pt-BR",
          "name": "RECEBIDO"
        },
        {
          "locale": "pt-PT",
          "name": "RECEBER"
        },
        {
          "locale": "ro-RO",
          "name": "RECEIVED"
        },
        {
          "locale": "ru-RU",
          "name": "ПОЛУЧЕНО"
        },
        {
          "locale": "sk-SK",
          "name": "PRIJATÉ"
        },
        {
          "locale": "sl-SI",
          "name": "RECEIVED"
        },
        {
          "locale": "sr-Latn-RS",
          "name": "PRIMLJENO"
        },
        {
          "locale": "sv-SE",
          "name": "BELOPP"
        },
        {
          "locale": "th-TH",
          "name": "RECEIVED"
        },
        {
          "locale": "tr-TR",
          "name": "GETİRİ"
        },
        {
          "locale": "uk-UA",
          "name": "RECEIVED"
        },
        {
          "locale": "vi-VN",
          "name": "RECEIVED"
        },
        {
          "locale": "zh-CN",
          "name": "RECEIVED"
        },
        {
          "locale": "zh-HK",
          "name": "RECEIVED"
        },
        {
          "locale": "zh-TW",
          "name": "RECEIVED"
        }
      ],
      "signature": {
        "display": "RECEIVED(settlement, maturity, investment, discount, [basis])",
        "parameters": [
          {
            "description": null,
            "name": "settlement",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "maturity",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "investment",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "discount",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "basis",
            "optional": true,
            "repeats": false
          }
        ],
        "trailing_repeats": false
      },
      "surface_name": "RECEIVED",
      "version_marker": null,
      "xlcall": {
        "code": "434",
        "symbol": "xlfReceived"
      }
    },
    "microsoft": "https://support.microsoft.com/en-us/office/received-function-7a3f8b93-6611-4f81-8576-828312c9b5e5"
  },
  "try_it": {
    "formula": "=RECEIVED(DATE(2024,1,1),DATE(2024,7,1),1000,0.05)"
  },
  "url": "https://handbook.dnacalc.com/functions/RECEIVED.html",
  "variants": [],
  "versions": [
    {
      "behaviour": "2,400 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.",
      "excel_build": "16.0 build 20430",
      "platform": "Windows, 64-bit, AMD Ryzen 7 4800H with Radeon Graphics",
      "sources": [
        "https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/5dc75391aa5125ccc5abdb095da85950980d6fd8/content/evidence/environments/FUNC.RECEIVED.json"
      ]
    }
  ]
}