MIRR Function (LibreOffice Calc)
Learn the MIRR function in LibreOffice Calc: Returns the modified internal rate of return for a series of investments.
Verification status: See the evidence and test scope described in this guide. How formula examples are checked
Availability and version history
- Introduced: Documented by LibreOffice 26.8.1.1; original introduction not established.
- Availability: Supported in LibreOffice 26.8.1.1, verified against its function registry. This identifies a supported release, not a final working version.
- Scope: Desktop Calc, using the English function name. Availability in other spreadsheet applications is separate.
- Checked: 2026-10-14 — function reference; versioned support. Documentation/source check; not a new native test. Existing example-specific test claims below retain their stated scope.
Validation scope: All 27 numeric MIRR scenarios were independently recalculated with 45-digit Decimal arithmetic and agree with the final saved CSV/JSON. Historical records attribute that CSV to Calc 25.2.3.2 Linux on 13 October 2026; the final recalculation cannot be independently established from the preserved evidence, and ten saved-workbook results differ. Native-history references below describe reported saved evidence. Three additional timeline calculations correct the text/blank interpretation. Calc was not rerun.
MIRR calculates a modified internal rate of return for an investment with cash outflows and inflows at regular intervals. In contrast with a basic internal rate of return (IRR), MIRR lets you model the financing cost for negative flows and a separate reinvestment rate for positive flows. The result is a per-period rate—annual only if one period is one year, monthly if one period is one month. It is not a payment amount, present value, or guarantee of future performance.
For a project with cash flows of −1000, 300, 350, and 450, a financing rate of 12% and reinvestment rate of 8%, MIRR gives approximately 5.6100541391% per period. That result is a useful normalized return estimate given those assumptions; the investment can still be risky, illiquid, or unsuitable.
Syntax and required arguments
=MIRR(Values; Investment; ReinvestRate)
| Argument | Required? | Meaning | Example |
|---|---|---|---|
Values |
Yes | Range or array containing cash flows in chronological order. Use negative amounts for costs or contributions and positive amounts for receipts. The ODF standard requires at least one of each sign. | A2:A5 |
Investment |
Yes | Financing/borrowing rate for negative cash flows, expressed as a decimal per period. | 12% or 0.12 |
ReinvestRate |
Yes | Rate assumed for reinvestment of positive cash flows, also per period. | 8% or 0.08 |
All three arguments are required; no documented optional defaults. The parameter name Investment in LibreOffice Help corresponds to the finance rate label in Microsoft Excel. Both apply to negative cash flows; they are not two additional cash flows to append to the range. Use ; between Calc function arguments in the official English-language syntax; localized installations can display different decimal or list separators. Enter percentage literals such as 8% or numbers such as 0.08, not the whole number 8 (which represents 800%). The published OpenFormula function name is MIRR. Sources: LibreOffice 26.8 Help, Financial Functions Part Two, MIRR; OASIS OpenFormula ODF 1.4 §6.12.27 (checked 2026-10-13).
Worked example: four cash flows over three periods
Enter the following values exactly in the cells shown:
| Cell | Value or formula | Interpretation |
|---|---|---|
| A2 | -1000 |
Initial cost at period 0 |
| A3 | 300 |
Cash received at period 1 |
| A4 | 350 |
Cash received at period 2 |
| A5 | 450 |
Cash received at period 3 |
| B2 | 12% |
Financing rate per period |
| B3 | 8% |
Reinvestment rate per period |
| B5 | =MIRR(A2:A5;B2;B3) |
Modified return per period |
Independently calculated result matching the final saved CSV: 0.0561005413913727, or 5.6100541391% when displayed in Percentage format. There are four cash-flow positions but only three elapsed intervals from period 0 through period 3. If those are calendar years, the result is annual; if those are quarters, the result is quarterly. Do not call a quarterly 5.61% result an annual yield without compounding it appropriately.
Independent check of the example
The basic reasoning is to move positive flows forward to the final period using the reinvestment rate, while moving negative flows backward to period 0 using the financing rate.
For this example, there is only an initial negative flow:
PV of costs = 1000
FV of receipts = 300 × (1.08)^2 + 350 × (1.08) + 450
= 349.92 + 378 + 450
= 1177.92
MIRR = (1177.92 / 1000)^(1/3) - 1
≈ 0.0561005413913729 = 5.6100541391% per period
This independent calculation matches the final saved CSV result. The equation is an independent mathematical benchmark, not an assertion that the separate intermediate expressions were each executed as Calc formulas in this run. That distinction is preserved in the evidence manifest.
Official LibreOffice Help example, reproduced
LibreOffice’s financial-function Help gives four entries −5, 10, 15, 8, with an investment (finance) rate of 0.5 and reinvestment rate of 0.1.
Enter −5, 10, 15, 8 into A2:A5, then enter:
=MIRR(A2:A5;0.5;0.1)
The independently verified numerical result is 94.1647376706893%, agreeing with the documentation’s rounded 94.16%. The 50% financing rate is intentionally extreme for illustration; it is not a suggested typical borrowing rate. The MIRR function itself does not judge whether supplied financing or reinvestment rates are commercially realistic.
More reproducible examples
For each row, put the cash flows into a fresh column starting at A2, extending downward one cell per period. Then use =MIRR(A2:A<last>;finance_rate;reinvest_rate) with the listed rates. Each numerical result below was independently calculated and matches the final CSV attributed to Calc ODS recalculation.
| Ordered cash flows from period 0 onward | Finance rate | Reinvest rate | Independently checked MIRR per period | Main takeaway |
|---|---|---|---|---|
-100, 200 |
10% | 10% | 100% | Two cash-flow positions mean one elapsed interval. |
-100, 35, 40, 50 |
10% | 10% | 10.8881268757% | Three periods of receipts. |
-100, 0, 0, 150 |
10% | 10% | 14.4714242553% | Zero cash-flow periods still count as periods. |
-1000, 300, 350, 450 |
12% | 8% | 5.6100541391% | Different finance and reinvestment rates. |
-500, 200, -400, 100, 300 |
10% | 10% | −5.0109337060% | A second investment outflow occurs later. |
-500, -100, 800 |
10% | 12% | 16.3548947765% | Multiple negative flows are discounted back. |
-1000, 800, -300, 900 |
5% | 8% | 12.9506864485% | Negative flow after an early receipt. |
-500, 50, 70, 90 |
6% | 9% | −23.2891034464% | A negative MIRR can be valid. |
-120000, 39000, 30000, 21000, 37000, 46000 |
10% | 12% | 12.6094130366% | Larger multiyear investment example. |
Every row uses its own interval count, determined by number of cash-flow positions minus one. A missing year or skipped month must not be silently removed from the timeline; enter an explicit 0 for a period with no cash movement when regular spacing must be preserved.
Extended cash-flow project: a second investment in period 2
An essential use of MIRR is a project that demands another cash contribution partway through. Enter -500, 200, -400, 100, and 300 into A2:A6, set B2=10%, B3=10%, and enter:
=MIRR(A2:A6;$B$2;$B$3)
The independently calculated result, matching the final CSV, is approximately −5.010933706% per period. This calculation differs from treating only the initial -500 as the total investment: the later -400 is a real cost and must be discounted back using the financing rate.
Independent audit for this five-position example:
PV of negative flows = 500 + 400 / (1.10)^2 = 830.578512396694
FV of positive flows = 200 × (1.10)^3 + 100 × 1.10 + 300 = 676.2
MIRR = (676.2 / 830.578512396694)^(1/4) - 1
≈ -0.0501093370595042
Recalculation quality note: A workbook library’s precomputed XLSX result cache for this case initially displayed approximately −4.5387%, which was not the result after LibreOffice recalculated the ODS copy. The ODS result was −5.010933706%, matching the independent standard equation. The archived evidence keeps both stages so this source of false discrepancies is traceable. Do not cite an imported, unrecalculated cache as observed Calc behavior.
MIRR’s financial mathematics
For cash flows C0, C1, ... Cn-1 occurring at equally spaced time positions, beginning at time 0, a common statement of the modified-IRR computation is:
PV(costs) = Σ[-Ci / (1 + finance_rate)^i] for negative Ci
FV(inflows) = Σ[ Ci × (1 + reinvest_rate)^(n - 1 - i)] for positive Ci
MIRR = (FV(inflows) / PV(costs))^(1/(n - 1)) - 1
The sums are taken only over the indicated signs, the initial cash flow is at time 0, and n is the count of cash-flow periods in the array, not the number of nonzero positive entries. This is the normalization corresponding to the OASIS ODF 1.4 OpenFormula §6.12.27 MIRR definition; the standard itself describes values as periodic investments and requires at least one negative and positive value. NPV and the future-value factors in a textbook derivation express the same economic idea. In professional cash-flow models, record your period convention and what finance and reinvestment rates actually represent.
Important: A valid numerical result depends on assumptions, not just arithmetic. A reinvestment rate of 12% is an assumption about what the project can earn on interim receipts; it does not establish that such a rate is achievable. A finance rate of 10% should align with the same period duration used by cash flows. If you compare projects of unequal duration, review the full cash-flow schedule and other measures such as NPV; MIRR alone should not decide the investment.
Comparing projects and sensitivity testing
A practical model stores common policy assumptions in separate input cells so reviewers can change them without editing formulas. Place financing rate in F2 and reinvestment rate in F3. For project A, enter cash flows in B2:B7; for project B use C2:C7, inserting zeros where a project has no flow in a period. Calculate:
=MIRR(B2:B7;$F$2;$F$3)
=MIRR(C2:C7;$F$2;$F$3)
These formulas are illustrative review examples, not additional native assertions beyond the 27 fixed cash-flow cases in the evidence file. Keep the same period unit across the projects. If one project ends earlier, padding zeros at the end changes its analyzed holding period; decide whether the appropriate comparison is a shared horizon, an annualized periodic return, or an NPV at a common discount rate. Do not quietly extend the holding period.
For a basic sensitivity check on the main four-position example, keep the cost and receipts constant and change ReinvestRate. With only one initial outflow, the financing rate does not alter the discounted cost (because its exponent is zero); the reinvestment rate does change the future value of receipts. With additional negative flows later, both inputs can affect the result. This explains why an apparently unchanged MIRR after varying the financing rate is not necessarily a spreadsheet bug.
Advanced scenario: converting a periodic MIRR to an annualized rate
If—and only if—the formula’s cash flows are equally spaced monthly observations and MIRR is the corresponding monthly rate in C2, a compounded effective annual rate may be illustrated as:
=(1+C2)^12-1
For quarterly cash-flow periods, use power 4, and for yearly periods, report the yearly MIRR directly. This conversion uses standard compounding and was not separately executed in the native MIRR fixture. A project with irregular actual dates needs a date-aware cash-flow method and clearly stated assumptions; conventional MIRR is not automatically date-aware. The related existing XIRR guide addresses an IRR variant for irregular dates, not a drop-in version of MIRR’s separate finance/reinvestment assumptions.
How blanks, text, zeros, and booleans behave
Calc Help says Values is an array or range of cash-flow entries. The final saved CSV/JSON attributes the following diagnostic series to Calc 25.2.3.2 (Linux) and reports these results from a four-position referenced range at 5% financing and 10% reinvestment:
| Four consecutive input cells | Reported final CSV result | Review interpretation |
|---|---|---|
-100, "skip", 50, 100 |
24.4989959799% | Reported result agrees with removing the text entry and using three numeric cash-flow positions. |
-100, blank, 50, 100 |
24.4989959799% | Reported result agrees with removing the blank and using three numeric cash-flow positions. |
-100, "20" as text, 50, 100 |
24.4989959799% | Reported result agrees with omitting the text and using three numeric cash-flow positions; it was not treated as 20. |
-100, TRUE, 50, 100 |
16.0298179390% | A Boolean TRUE cell affected the result in this Calc 25.2.3.2 test. |
The final CSV reports these referenced-cell results, but several differ from the saved ODS cache. Independently, 24.4989959799% equals MIRR for [-100, 50, 100] over two intervals. Preserving four positions with an explicit zero instead gives approximately 15.7294527263%; thus the reported text/blank result does not preserve the original timeline. These reported diagnostics do not establish direct-scalar or cross-version behavior. In particular, do not assume that LibreOffice’s behavior for a Boolean cell exactly matches the Microsoft Excel manual. A financial schedule should use explicit numeric zero for a no-cash-flow period and never depend on incidental behavior of text or logical values. A typed "20" that looks numeric may be skipped silently; verify data types after importing data from bank exports, ERP systems, or other spreadsheets.
Errors and limitations
The following are reported observations in the final CSV attributed to Calc 25.2.3.2 ODS recalculation, unless separately labeled as a standards requirement. Displayed error names can vary across versions, data contexts, and localizations.
| Symptom | Likely cause | Action |
|---|---|---|
Err:502 with 10, 20, 30 only |
No negative cash flow in Values. |
Include actual investment costs as negative numbers. |
Err:502 with -10, -20, -30 only |
No positive cash inflow. | Include actual receipts or assess whether MIRR is appropriate. |
Err:502 with 0, 0, 0 |
No positive/negative pair. | Check whether the range points to the intended data. |
Err:511 for =MIRR(-100;20) |
Required third argument not supplied; first parameter is also not a valid multi-flow range. | Supply all three required arguments and a correct cash-flow series. |
#VALUE! for a text financing-rate argument |
A rate is not valid numerical input. | Use 10% or numeric 0.10, not the literal string "rate". |
Err:504 for =MIRR(100;0.1;0.1) |
Values is not supplied as a suitable array/range of cash flows in the tested case. |
Provide a valid range with both inflows and outflows. |
#NUM! in a case where reinvestment rate was -100% |
Certain boundary rates make growth factors undefined/unsuitable for ordinary financial interpretation. | Check constraints and use economically meaningful rates. |
Result shows 0.0561 instead of 5.61% |
Number formatting displays the underlying decimal rate. | Format the result as Percentage if appropriate. |
| Result changes after ODS conversion or recalculation | Cached formula values or import rules may differ from the newly evaluated formula. | Force a native recalc and record application/version before comparing. |
| Unexpected result after deleting empty rows | Rows represent time positions; shortening the array changes n-1. |
Put 0 in periods with no flow; don’t collapse the time series. |
| A negative rate | Investment result genuinely below break-even under the financing/reinvestment assumptions. | Validate signs and assumptions, then report the negative return; do not automatically mask it. |
Boundary-rate caution: The final saved report lists numerical values even for some financing rates at or below −100% and a negative result for one reinvestment rate below −100%. They are diagnostic observations, not portable calculation rules and certainly not endorsements of economically meaningless rates. The standard requires both positive and negative cash flows; it does not establish that all arbitrary extreme rates yield financially interpretable results. For real analysis, document and validate the permitted rate domain before publication or downstream decisions.
No reinvestment assumption is universally correct
MIRR deliberately separates two economic assumptions. If the reinvestment rate is implausible, MIRR may overstate what the interim receipts can earn; if the financing rate does not reflect the actual borrowing rate or cost of capital, it may distort the cost of later injections of capital. A result of 5.61% per year is not automatically attractive if the project is risky and the financing cost is 12%; compare it with the appropriately estimated opportunity cost, NPV and the full project context. This educational page is not investment advice.
Portability: LibreOffice, Excel, and Google Sheets
LibreOffice Calc: Online 26.8 Help documents the function, and ODF 1.4 OpenFormula §6.12.27 defines its name, three-argument syntax and signed-cash-flow requirement. The described numeric examples were reported for LibreOffice Calc 25.2.3.2 on Linux. Windows/macOS, translated function names, and other Calc releases were not tested here. LibreOffice’s use of semicolons reflects the documented English-locale syntax; check locale configuration.
Microsoft Excel: Microsoft documents the corresponding MIRR(values, finance_rate, reinvest_rate) syntax, with English formulas conventionally using commas. Its official Help treats text, logicals and empty cells in array/reference inputs differently from some Boolean-cell outcomes reported in the Calc 25.2.3.2 fixture; therefore verify imported Excel workbooks by recalculating, not trusting stale file caches. This is a documentation comparison, not a claim to have tested Excel in this review. Microsoft MIRR documentation.
Google Sheets: Google documents the MIRR(cashflow_amounts, financing_rate, reinvestment_return_rate) counterpart. Specific empty-cell, logical and error cases were not executed in Sheets. Treat the common function name as a starting point, not proof of identical cross-application evaluation. See Google Sheets MIRR documentation.
Date-aware caution: MIRR assumes regular periods represented by positions; a table containing uneven transaction dates must not be fed to MIRR without separately modelling or normalizing the timing. XIRR uses dates but computes a different measure; it does not automatically reproduce MIRR’s reinvestment assumptions.
Related LibreOffice Calc functions
- IRR — internal rate of return computes a discount rate that zeroes the modeled NPV, without MIRR’s two separate financing/reinvestment rates.
- NPV — net present value evaluates discounted cash flows at a specified rate; useful alongside MIRR when ranking projects.
- XIRR — IRR for dated cash flows applies actual dates but answers a different financial question.
- XNPV — discounted value using dates supports date-aware cash-flow valuation where appropriately documented.
Verified sources and evidence, dated
Checked: 13 October 2026 (UTC). Current Help says LibreOffice 26.8 Help, while the historical report attributes its outputs to LibreOffice Calc 25.2.3.2 (Linux). All vendor links below were used as official documentation without native execution of non-LibreOffice applications.
| Specific claim | Official citation | Evidence type |
|---|---|---|
MIRR(Values;Investment;ReinvestRate) and both rate meanings; official -5,10,15,8 94.16% example |
LibreOffice Help — Financial Functions Part Two, MIRR | Vendor Help reviewed; example replicated in 25.2.3.2. |
| ODF function name, three mandatory parameters, at least one positive and negative; periodic-series definition | OASIS ODF 1.4 OpenFormula §6.12.27 | Standards review; independent mathematical verification. |
| Excel financial function counterpart and argument meanings | Microsoft Support — MIRR | Official comparison only, no Excel execution. |
| Google Sheets counterpart and argument naming | Google Docs Editors Help — MIRR | Official comparison only, no Sheets execution. |
Evidence limitation: The historical report attributes its results to Calc 25.2.3.2, but five numerical and five diagnostic results differ between the saved workbook and final reported output. The final output agrees with the independent mathematics for all 27 ordinary numerical scenarios. It does not independently establish the conflicting type/error behavior as verified Calc execution. Treat those diagnostics as reported observations requiring confirmation in your own version.