TBILLPRICE Function (LibreOffice Calc)
Learn the TBILLPRICE function in LibreOffice Calc: Returns the price of 100 currency units face value for a treasury bill.
Verification status: Consult the documentation and examples below. Native application testing has not been documented for this guide. How formula examples are checked
Testing scope (13 October 2026): Results identified as native observations come from a historical LibreOffice Calc 25.2.3.2 Linux run. The saved ODS corroborates all 102 numerical and diagnostic records. Independent actual-day arithmetic reproduces the reported 29 agreements and 43 differences/errors; a separate check of the 25.2.3.2 source and its date helpers explains all 72 numerical cases, including six errors. No new Calc run was performed, and Calc 26.8 was documentation-checked only.
What TBILLPRICE does
TBILLPRICE estimates the purchase price per 100 currency units of face value for a discounted, non-coupon Treasury bill. If a bill redeems at 100 and sells at 98.45, the implied discount from par is 1.55 per 100. The annual discount quote is a different measure from the investor’s annualized yield. TBILLPRICE consumes the quoted discount rate and dates; its paired function TBILLYIELD consumes the resulting purchase price.
Because this is a per-100 quotation, the output 98.45 means a face value of 10,000 would imply 98.45/100*10000 = 9,845 purchase cost before fees, assuming the stated bill and quote apply. The function does not include transaction costs, taxes, brokerage commissions, currency conversion or settlement conventions imposed by your institution.
Official syntax and arguments
TBILLPRICE(Settlement; Maturity; Discount)
| Argument | Required | Exact purpose | Recommended data |
|---|---|---|---|
Settlement |
Yes | Purchase/settlement date for the Treasury bill | Actual date cell or DATE(y;m;d) |
Maturity |
Yes | Date at which the bill matures and pays its face amount | Actual date cell later than settlement |
Discount |
Yes | Annual bank-discount quotation expressed as a decimal | 0.09 or 9% for nine percent |
There are exactly three required arguments, with no documented optional default or Basis argument. A fourth argument is a syntax error in the tested version. The ODF 1.4 OpenFormula specification requires the discount to be positive and maturity to be less than one year beyond settlement. Do not rely on the tested release to enforce every constraint (see limits below).
Basic example from official LibreOffice Help — native result
The Help example assumes a purchase on 1999-03-31, maturity on 1999-06-01 and annual discount of 9%.
=TBILLPRICE(DATE(1999;3;31);DATE(1999;6;1);9%)
Native Calc 25.2.3.2 result: 98.45. This also reproduces LibreOffice 26.8 Help’s result using ISO date text: =TBILLPRICE("1999-03-31";"1999-06-01";0.09). The two dates have 62 actual days between them. With the conventional Actual/360 bank-discount arithmetic,
Price = 100 × (1 − 0.09 × 62/360) = 98.45
This agreement is real for the illustrated dates, not a guarantee that the tested Calc version follows Actual/360 for all dates. All 62-day example assertions were directly evaluated, not invented.
Do it with worksheet cells
| Cell | Enter | Meaning |
|---|---|---|
| A2 | =DATE(1999;3;31) |
Settlement |
| B2 | =DATE(1999;6;1) |
Maturity |
| C2 | 9% |
Annual discount |
| D2 | =TBILLPRICE(A2;B2;C2) |
Per-100 purchase price: 98.45 |
| E2 | =DAYS(B2;A2) |
Calendar days: 62 |
| F2 | =100*(1-C2*E2/360) |
Independent conventional price: 98.45 |
Use real spreadsheet dates rather than unvalidated imported strings. If D2 and F2 differ on a different bill, determine the date convention and compare your platform to the bill documentation instead of forcing a presumed answer.
Worked calculations and the date-count discrepancy
The comparison below separates observed native Calc output from the independently calculated Actual/360 price. The independent price uses (Maturity−Settlement) as the elapsed calendar days and 100*(1−Discount*Days/360). Numerical results were checked by Decimal arithmetic and a second native DAYS diagnostic.
| Settlement → maturity | Annual discount | Actual days | Calc 25.2.3.2 TBILLPRICE | Separate Actual/360 price | Finding |
|---|---|---|---|---|---|
| 1999-03-31 → 1999-06-01 | 9% | 62 | 98.450000 | 98.450000 | Official example agrees |
| 2026-01-01 → 2026-04-01 | 5% | 90 | 98.736111 | 98.750000 | Native price reflects roughly 91 days, not 90 |
| 2026-01-01 → 2026-07-01 | 9% | 181 | 95.475000 | 95.475000 | Agreement on this interval |
| 2024-02-28 → 2024-03-01 | 17.5% | 2 | 99.805556 | 99.902778 | Material leap-year/date count difference |
| 2026-01-31 → 2026-02-28 | 5% | 28 | 99.569444 | 99.611111 | End-of-month difference |
| 2026-04-15 → 2026-10-15 | 12% | 183 | 93.966667 | 93.900000 | Native output reflects fewer days |
What the source check establishes: In the LibreOffice 25.2.3.2 implementation, getTbillprice first advances maturity by one calendar day, then uses the US/NASD 30/360 year-fraction helper, mode 0. It prices the bill as 100*(1-Discount*YearFraction). Thus January 1–April 1 uses 91 convention days after the maturity adjustment, while February 28–March 1, 2024 uses four convention days. This release-specific mapping independently reproduces all 36 saved TBILLPRICE cases, including six errors. It is not an unconditional Actual/360 rule or a claim about untested versions.
How to independently audit another date pair
For a bill with settlement in A2, maturity B2 and discount rate C2:
=TBILLPRICE(A2;B2;C2)
=100*(1-C2*DAYS(B2;A2)/360)
=TBILLPRICE(A2;B2;C2)-100*(1-C2*DAYS(B2;A2)/360)
The first line is the platform function; the second is an explicit independent Actual/360 calculation; the third is a discrepancy check (zero only if they agree). This direct check is useful when migrating financial sheets or handling month-end settlements. It is not a certified alternative for a broker’s actual financial convention.
Advanced example: budget a face-value purchase
Given A2/B2/C2 as in the official 1999 example, enter G2 = 10,000 as the face value. Then:
=G2*TBILLPRICE(A2;B2;C2)/100
Independent multiplication gives 9,845 currency units for the purchase value, before fees; this scaled worksheet formula was not separately native-tested. Face-value profit upon redemption would be =G2-G2*TBILLPRICE(A2;B2;C2)/100, or 155. To compare the investor’s annualized yield rather than the bank discount, use:
=TBILLYIELD(A2;B2;TBILLPRICE(A2;B2;C2))
The historical price and yield calls for this date pair agree with about 0.0914169629, or 9.14169629%; the displayed nested cell-reference layout is reproducible guidance rather than an additional recorded native assertion. This is correctly different from 9%, because an investment yield annualizes profit against the purchase cost, not the $100 redemption value. Never treat TBILLYIELD as the inverse of the discount quote.
Common errors, observed edge cases and limitations
| Example situation | Directly observed in Calc 25.2.3.2 | Recommended action |
|---|---|---|
Discount is 0 or negative |
Err:502 |
ODF calls for a positive discount |
| Settlement is later than maturity | Err:502 |
Reverse or correct dates; verify =DAYS(B2;A2) |
| Missing or extra fourth argument | Err:504 |
Supply exactly three arguments; there is no Basis parameter |
Invalid text discount such as "abc" |
#VALUE! (error 519) |
Convert/validate a real numeric percentage |
Numeric-looking text "0.05" |
Accepted in this native test | Do not rely on implicit coercion across platforms/locales |
| Settlement equals maturity at a 5% discount | 99.986111, not an error | Treat same-day input as invalid for your model even if native Calc accepts it |
| Settlement 2026-01-01; maturity 2027-01-02; discount 5% | 94.972222, despite one-year constraint | Explicitly validate date span; Calc did not reject this input |
| Settlement 2026-01-01; maturity 2026-12-30 | Err:502 for tested positive discount values |
Do not assume a smoothly enforced one-year boundary; compare against input validity and other versions |
| 99% discount with 2026-01-01 → 2026-12-30 | Err:502 in the saved probe; the source rejects the integral year fraction for these dates |
This does not establish a general negative-price guard. Validate economic plausibility separately. |
The one-year observations are particularly important: ODF requires a maturity less than one year beyond settlement, yet Calc 25.2.3.2 accepted dates more than a calendar year out in one test and rejected a 363-day interval in another. The checked source explains this: after advancing maturity, it rejects an integral year fraction, rather than applying a simple less-than-one-year ceiling. A 363-day calendar interval becomes exactly one convention year and is rejected, while some longer nonintegral fractions pass. This finding applies to the checked 25.2.3.2 implementation, not all releases.
Safer model-side input checks
A reviewable guard formula is:
=IF(NOT(AND(ISNUMBER(A2);ISNUMBER(B2);ISNUMBER(C2)));"Check bill inputs";IF(AND(A2<B2;B2<EDATE(A2;12);C2>0);TBILLPRICE(A2;B2;C2);"Check bill inputs"))
This enforces a conservative Maturity < Settlement+12 months policy matching the strict wording of ODF for a one-year bill; some market conventions accept a bill that matures exactly one year after settlement, so adapt any real trading rule to your counterparty’s contract rather than assuming this screen is authoritative. This guard is suggested input validation, not an additional native assertion. Use the guard as a conservative input screen; it does not change the function’s internal date convention.
Troubleshooting before sharing a spreadsheet
Check the locale’s argument separator and decimal setting, verify that the date cells are real numbers formatted as dates, and compare =DAYS(B2;A2) with a calendar. A price formatted with two decimals can hide small discrepancies that become material on large face values. Keep full precision for intermediate arithmetic, show the exact settlement/maturity, and keep the 25.2.3.2 behavior warning when the file is opened in a newer release.
Entering dates and handling locales
Use DATE(year;month;day) or genuine spreadsheet date cells. DATE avoids the ambiguity of 04/01/2026, which means different dates in different locales. ISO-8601 quoted strings were accepted in the reproduced official 1999 example, but text date parsing is locale-sensitive and should not be the foundation of a reusable model. The examples on this page use Calc’s common English-function-name setting, a . decimal mark and semicolon argument separators. In some locales or customized settings, function names, decimal marks and separators appear differently. The function has no Basis argument, so do not append a fourth day-count parameter.
For reproducibility with cell references, place A2 = 2026-01-01 and B2 = 2026-04-01 as genuine dates (or compute them with =DATE(2026;1;1) and =DATE(2026;4;1)). Check =DAYS(B2;A2) = 90 in the native tested version. Date serial systems and importing a CSV can affect older workbook values; verify any imported dates.
Calculation conventions and practical limitations
Treasury-bill quotes often use a bank-discount convention, whose discount rate is quoted relative to face value, not investment cost. A money-market investment yield uses the purchase price as its denominator. That is why a discount of 9% and the yield on the resulting $98.45 price are not the same percentage.
There is also a separate, material date-count portability risk. The independent Actual/360 reference formulas in this article intentionally calculate elapsed calendar days with DAYS; they are not claimed to be the exact formula engine implementation on every LibreOffice build. A 72-case native Calc 25.2.3.2 comparison found 29 matches and 43 differences between the tested TBILLPRICE/TBILLYIELD outputs and independent Actual/360 benchmarks (36 cases per function). Errors near month ends and year boundaries can be financially significant. The observed differences are retained rather than edited out. For settlement or valuation decisions, compare against the bill’s official quote and the precise convention used by your institution.
The current LibreOffice 26.8 Help gives these functions’ syntax and examples but does not document every observed Calc 25.2.3.2 date-count edge case. Version 26.8 was documentation-checked, not executed. The ODF 1.4 OpenFormula specification defines the names, argument types and one-year/positive-input constraints, but these checks cannot prove that every Calc release follows the same constraints. Do not assume identical outputs merely because another spreadsheet advertises a function with the same name.
Validation and reproducibility disclosure
Historical numerical records, saved formulas and ODS outputs were compared directly. The 72 actual-day benchmark comparisons and 30 additional diagnostics are corroborated by the saved workbook. An independent source-based calculation now explains all 72 numerical outputs and errors for the checked release. The original 25 attempts to equate investment yield with discount quote used an invalid financial assumption and are not scored as function failures. The actual-day benchmark remains useful as a separate convention check, not a description of this implementation.
Migration compatibility: what was—and was not—verified
| Target | Evidence | Coverage |
|---|---|---|
| LibreOffice Calc 25.2.3.2 on Linux | Historical UNO results corroborated by saved formulas/workbook and release-specific source | Function recognized; results and error observations documented here, including mismatches |
| LibreOffice Calc 26.8 | Official Help page checked October 13, 2026 | Syntax and official examples supported; no native run of 26.8 |
| Other spreadsheet applications | No product-specific native or official-source test in this review | Not verified; do not infer compatibility from Excel alone |
Related Spreadsheet-Tutorials guides
Related functions and date-count tools:
Source-by-claim record (checked 2026-10-13)
| Claim covered | Official primary source | What was verified |
|---|---|---|
| Calc-specific function definition, exact argument order and official March 1999 example | LibreOffice 26.8 Help — Financial Functions Part Two, TBILLPRICE/TBILLYIELD sections | Page text checked October 13, 2026 |
| ODF function name, argument types, positive-value and less-than-one-year constraints | OASIS ODF 1.4 OpenFormula, sections 6.12.48–6.12.49 | Published standard HTML; checked October 13, 2026 |
| Precise return values, error codes, date-edge behavior on this page | Historical Calc 25.2.3.2 formula results and saved workbook | Native execution; independent Python Decimal/datetime comparison separately labeled |
Implementation evidence: Financial functions at tag libreoffice-25.2.3.2 and date helpers at the same tag, retrieved 13 October 2026. The source interpretation explains the recorded version; the executable was not rerun.