FVSCHEDULE Function (LibreOffice Calc)
Learn the FVSCHEDULE function in LibreOffice Calc: Returns the future value of the initial principal after a series of compound interest rates are applied.
Verification status: Official documentation referenced; example outcomes independently reasoned or arithmetically checked where stated. Not executed in LibreOffice Calc. How formula examples are checked
Historical validation scope: Native observations refer to saved LibreOffice Calc 25.2.3.2 Linux evidence dated 13 October 2026 at 01:09 UTC. This later review verified all artifact hashes, all 63 formula/result pairs and eight worked-example cells, and independently recalculated the numerical examples. Calc was not rerun.
Quick answer: FVSCHEDULE calculates what a starting balance becomes after a sequence of different percentage increases or decreases. For 1,000 invested at 3%, then 4%, then 5%, enter:
=FVSCHEDULE(1000;{0.03;0.04;0.05})
Result: 1,124.76. This exact formula appears in LibreOffice’s official Financial Functions Help [S1] and was also evaluated successfully in LibreOffice Calc 25.2.3.2 on Linux [N1]. The rates are compounded; they are not added or averaged first. This function is useful for investment planning, year-by-year returns, inflation adjustments, variable growth forecasts and what-if analysis, as long as each period’s rate applies to the entire balance.
Validation scope, 13 October 2026: The current online LibreOffice Help identifies itself as 26.8. The native execution behind the examples below used Calc 25.2.3.2, not 26.8. Independent Python arithmetic provided the expected values for 20 numerical checks; all 20 matched Calc within the stated tolerances. Eleven separate input/error observations were recorded but are not numerical assertion passes. External applications were not executed.
Official syntax and arguments
=FVSCHEDULE(Principal; Schedule)
LibreOffice 26.8 Help [S1] and the OpenDocument 1.3 OpenFormula specification [S2] both document exactly two required arguments, with no optional arguments or documented defaults.
| Argument | Required | Type and role | Practical advice |
|---|---|---|---|
Principal |
Yes | Numeric starting capital, investment or balance | Enter a number such as 1000, or reference a cell such as B3. |
Schedule |
Yes | Ordered sequence of periodic decimal interest rates | Use a continuous row/column range such as C3:C5, or a list/array constant. A 3% return means 0.03 (or 3%), not 3. |
Both parameters must be present. A one-rate scenario can use one numeric rate, as native testing confirmed with =FVSCHEDULE(2500;0.08) returning 2700; a range is better when you expect rates to change. The ; separates Calc function arguments in the tested English-language environment; local settings may change separators or decimal symbols. In array constants the row/column separators are configured separately from function argument separators [S1, S3]. For a portable tutorial, prefer a simple cell range.
The function’s English Calc name is FVSCHEDULE. It is a distinct financial function, not an alias for FV, RATE or NPER. It appears as FVSCHEDULE in OpenFormula 1.3, section 6.12.21, which defines an accumulated-value calculation from Principal and NumberSequence Schedule [S2].
The calculation: multiply growth factors, not interest rates
Mathematically, for initial principal P and rates r1, r2, …, rn:
Future value = P × (1 + r1) × (1 + r2) × … × (1 + rn)
A rate of −10% multiplies the current balance by 0.90. A rate of +10% multiplies it by 1.10. Consequently gaining 10% and then losing 10% does not return you to the starting balance: 1,000 × 1.10 × 0.90 = 990 [I1; N1]. The period-by-period change matters more than the simple average rate when estimating portfolio results.
The 3%, 4%, 5% example works out as follows:
| Period | Starting balance | Rate | Ending balance |
|---|---|---|---|
| 1 | 1,000.00 | +3% | 1,030.00 |
| 2 | 1,030.00 | +4% | 1,071.20 |
| 3 | 1,071.20 | +5% | 1,124.76 |
The final balance is 1,124.76 and accumulated growth is 1,124.76 − 1,000 = 124.76. This assumes no withdrawals, deposits, fees, or taxation between periods. For a real portfolio with cash flows, a schedule-only calculation may not reflect the actual balance.
Copy-and-use example: build a changing-rate forecast
Open Calc, start with a blank sheet, and enter these exact values. Format column C as Percent if you like; underlying rate values can be entered as 3%, 4%, 5%.
| Cell | Enter | Meaning |
|---|---|---|
B3 |
1000 |
Initial amount |
C3 |
3% |
Period 1 return |
C4 |
4% |
Period 2 return |
C5 |
5% |
Period 3 return |
B13 |
=FVSCHEDULE(B3;C3:C5) |
Final compounded balance |
Expected B13: 1124.76. The identical input structure exists in the saved native .ods verification workbook [N1]. The B3 input can be changed independently, and adding a fourth rate to C6 simply requires expanding the schedule reference to C3:C6.
To confirm the result yourself without relying on FVSCHEDULE, enter:
B10: =B3*(1+C3)
B11: =B10*(1+C4)
B12: =B11*(1+C5)
B14: =B13-B12
The B10, B11, B12 values should be 1030, 1071.2, 1124.76, while B14 should display zero or a negligible floating-point difference. These native workbook formulas make it easier to spot a wrongly typed rate or misaligned range.
Entering rates safely
To enter 3%, choose either 3% or numeric 0.03. Do not type 3 unless you genuinely mean a 300% return. You can explicitly calculate an ordinary percentage change as (new-old)/old, but only if old is nonzero and the desired business definition makes sense. When importing rates, format them as percentages after checking their numeric values; formatting alone does not convert a plain 3 into 0.03.
More tested formulas with exact expected results
Each row here was executed in Calc 25.2.3.2 and independently compared with Python’s multiplication of growth factors [N1; I1]. ; within braces uses the list notation shown in LibreOffice Help; for the least ambiguous entry use a numeric cell range instead.
| Situation | Formula | Native result |
|---|---|---|
| Three variable returns | =FVSCHEDULE(1000;{0.03;0.04;0.05}) |
1124.76 |
| Two opposing 10% changes | =FVSCHEDULE(1000;{0.1;-0.1}) |
990 |
| One period at 8% | =FVSCHEDULE(2500;0.08) |
2700 |
| Two losses, −10% then −20% | =FVSCHEDULE(2000;{-0.1;-0.2}) |
1440 |
| Five periods at 5% each | =FVSCHEDULE(1000;{0.05;0.05;0.05;0.05;0.05}) |
1276.2815625 |
| Initial amount zero | =FVSCHEDULE(0;{0.1;0.2}) |
0 |
| A full −100% loss then +15% | =FVSCHEDULE(1000;{-1;0.15}) |
0 |
| Large starting capital | =FVSCHEDULE(1000000;{0.02;0.035;0.01}) |
1066257 |
The rate sequence is not restricted to annually spaced values. However, every rate must apply to the period you intend—use monthly rates for months, quarterly rates for quarters, and so on. The function has no parameter for dates, calendar conventions, compounding frequency or day counts.
Advanced use 1: variable inflation or budget growth
Suppose your current operating cost is 5,000, and the projected increases over five periods are 9%, −4%, 2.5%, 3.75%, and −1%. The following native-tested formula returns 5508.26595, or 5,508.27 at two-decimal presentation [N1]:
=FVSCHEDULE(5000;{0.09;-0.04;0.025;0.0375;-0.01})
For a practical workbook, place those five values in cells C3:C7 and use =FVSCHEDULE(B3;C3:C7) instead. If a later period has a zero increase, enter a numeric 0%. Do not leave a cell blank if you want to demonstrate that an explicit 0% was used; a blank is skipped by this function. Add an assumptions note explaining whether your rates are contractual, estimated or historical.
Advanced use 2: calculate total change and equivalent per-period rate
Once you have the ending value in B13 and starting value in B3, total return is:
=B13/B3-1
For a three-period schedule, the equivalent geometric per-period rate is:
=(B13/B3)^(1/3)-1
With the 3%, 4%, 5% example, the equivalent periodic return is approximately 3.996795%. This is based on a positive starting principal and positive ending/start ratio and assumes three comparable periods. The geometric rate is not the arithmetic average (3%+4%+5%)/3 = 4%; a constant 4% for three periods yields 1,124.864, slightly more than 1,124.76. Do not apply fractional powers blindly when the ratio is negative or when there are deposits and withdrawals.
If you need just the accumulated gain rather than ending value, use:
=FVSCHEDULE(B3;C3:C5)-B3
For the worked example this returns 124.76, natively tested [N1]. For an annualized rate over three years, the three schedule rows must actually represent three years; the function has no way to infer elapsed time from rows.
Advanced use 3: audit a missing or text-formatted rate
The online LibreOffice Help explicitly says that a text cell or an empty cell within a rate range is ignored [S1]. This was confirmed with a range containing 3%, 4%, 5%, the text skip me, and a genuinely blank cell: the returned value was still 1124.76 [N1]. This creates a subtle hazard: the result can look plausible while an imported rate has quietly been omitted.
In native diagnostic tests, a range of numeric-looking text such as the strings "0.03" and "0.04" also produced the unchanged initial capital, 1000. A genuinely empty schedule range likewise returned the principal, 1000. Neither test means that a malformed input has been correctly processed; it means no numeric growth factor was applied. By contrast, a direct "bad" schedule argument produced #VALUE!. Some text-producing formulas in rate cells can also behave differently from fixed text—see Troubleshooting.
Consider a separate data-quality check before depending on results:
=COUNT(C3:C7)
COUNT tells you how many numeric observations are present. Compare it to the number of periods you expected; =ROWS(C3:C7) reports five slots, not necessarily five valid rates. If your intended model has exactly five rates and COUNT(C3:C7)<5, fix the imported or missing values first. Use COUNT for validation and NUMBERVALUE if you deliberately need to convert locale-formatted numeric text.
FVSCHEDULE versus FV and ordinary multiplication
| Question | Better tool | Reason |
|---|---|---|
| “What happens to a starting principal under changing growth rates?” | FVSCHEDULE |
Takes a sequence of different rates with no periodic contributions. |
| “What is the end value with one constant rate and regular cash payments?” | FV |
Models an annuity/constant rate and recurring payment. Sign conventions differ. |
| “What is the starting value of a specified future cash flow?” | PV |
Present-value modelling under its own constant-rate payment assumptions. |
| “I need a fully auditable year-by-year cash-flow model.” | Individual cells and arithmetic | Allows deposits, withdrawals, taxes, fees, and changing principal. |
For a constant 5% rate over three periods, FVSCHEDULE(1000;{0.05;0.05;0.05}) and 1000*(1.05)^3 agree. FV uses payment/sign conventions and is not a drop-in substitution for variable-rate schedules.
Errors, limits, and troubleshooting
These entries distinguish the official definition from observed Calc 25.2.3.2 behavior [S1, S2, N1]. No different-version errors were assumed.
| Symptom | Cause and tested observation | What to do |
|---|---|---|
Err:504 with =FVSCHEDULE() or only one argument |
Tested 25.2.3.2 did not accept missing required arguments. | Supply a numeric principal and rate schedule. |
#VALUE! for =FVSCHEDULE("bad";C3:C5) |
Principal is text, not numeric. | Convert/validate principal before calculating. |
#VALUE! for =FVSCHEDULE(1000;"bad") |
Direct schedule argument is nonnumeric text. | Use numbers, percentages or a checked numeric range. |
| Result equal to starting capital when growth was expected | A range containing only empty cells or fixed numeric-looking text was ignored in the observed cases. | Check COUNT, input cell types and format of imported data. |
Err:504 when rate range contains a cell with =NA() |
Observed error inside the tested range was propagated as an error (rather than silently omitted). | Resolve source formula errors before running the forecast. |
#VALUE! for a referenced formula returning "" |
Observed an empty-string formula result differing from a genuinely blank cell. | Avoid using ="" to stand in for an intentionally zero rate; use 0 if appropriate. |
| Unexpected large balance | Entering 3 instead of 3% multiplies that period by 4, not 1.03. |
Inspect the underlying decimal rates. |
| Negative accumulated balance | =FVSCHEDULE(1000;-1.5) returned −500 in this Calc version. |
Reject unrealistic below −100% rates in financial models at the data-validation layer. |
| Wrong rate period | Annual rate values used in monthly rows, or vice versa. | Match each rate to its actual interval. |
| Precision appears slightly off | IEEE 754 double-precision floating-point effects can appear in calculations. | Compare within sensible tolerance; round for reporting, not every intermediate growth step unless the business rule demands it. |
Unsupported assumptions to avoid: FVSCHEDULE does not download bank rates, decide how to handle fees, know that a row means a calendar year, validate economic realism, or preserve intra-period cash movements. OpenFormula lists no universal numerical input constraints for the function [S2]. The observed negative result for a rate below −100% is mathematically consistent with multiplying by a negative growth factor, but it rarely makes business sense.
Compatibility, formula language and file interchange
FVSCHEDULE is named in the OpenFormula 1.3 specification with Principal and Schedule, and Calc 25.2.3.2 executed the tested formula using that English function name [S2, N1]. LibreOffice’s locale settings can change decimal and argument/list punctuation. If a pasted {...} array is interpreted incorrectly, enter the rates into cells and use C3:C5 instead. Keep the source file’s original .ods format for interchange testing, and recalculate when opening in a different spreadsheet engine.
The function name also exists in other spreadsheet products, but this guide’s results are not tests of Excel or Google Sheets. Formula separators, array literal notation, text conversion, error propagation, and financial assumptions can differ. Recheck the target vendor’s own documentation and perform a cross-application test before promising identical results. This page makes no cross-product execution claim.
Frequently asked questions
Does it give the final balance or just the interest earned?
The final balance. Subtract the principal to calculate gains: =FVSCHEDULE(B3;C3:C5)-B3. For 1,000 with 3%, 4%, and 5%, the final value is 1,124.76 and the gain is 124.76 [N1].
Can I supply rates as percentages rather than decimal fractions?
Yes. A cell containing 3% has the numeric rate 0.03. The function expects factors derived from decimal rates and works with cells formatted as Percent. Avoid supplying the plain number 3 to mean 3%.
Can I use weekly or monthly growth?
Yes, when each supplied rate belongs to one week or month, respectively. FVSCHEDULE applies the rates in sequence but does not know the elapsed dates. An annualized return requires a separate time assumption.
Does order affect the result?
For a starting balance with only rate multiplication and no interim cash movements, reordering the same rates produces the same final product; the native test with 3%, 4%, 5% reversed also returned 1,124.76 [N1]. Intermediate balances still differ, and with periodic deposits, withdrawals, or fees the order can affect the outcome substantially.
Why did my imported spreadsheet return the same principal?
Its schedule may contain missing or text-formatted rates. The function ignores fixed text and truly blank cells within a reference range according to official Help; this behavior was confirmed in Calc 25.2.3.2 [S1, N1]. Validate the numeric count and convert invalid text explicitly.
Validation notes and official references
Official documentation, checked 2026-10-13:
- [S1] LibreOffice 26.8 Help, Financial Functions Part Three — FVSCHEDULE: https://help.libreoffice.org/latest/en-US/text/scalc/01/04060118.html#fvschedule (the whole page is also available at https://help.libreoffice.org/latest/en-US/text/scalc/01/04060118.html). Supports the two-argument syntax, ignored blank/text cells and the 1,124.76 example. Its version label is 26.8, not the tested runtime.
- [S2] OASIS OpenDocument 1.3, Part 4, §6.12.21 FVSCHEDULE: https://docs.oasis-open.org/office/OpenDocument/v1.3/cs02/part4-formula/OpenDocument-v1.3-cs02-part4-formula.html . Documents
FVSCHEDULE(Number Principal; NumberSequence Schedule)and the multiplier-product formula. - [S3] LibreOffice Help, array constant settings: https://help.libreoffice.org/latest/en-US/text/scalc/01/04060107.html . Explains list/array punctuation settings; user-specific locale configurations may differ.
- [N1] Native workbook and detailed results in the saved dated evidence:
FVSCHEDULE_GAMMALN_native_validation.odsandnative_validation_results.json, executed in LibreOffice Calc 25.2.3.2 on Linux, 20/20 FVSCHEDULE numeric comparisons passed; 11 separate diagnostic observations recorded (not counted as passes). - [I1] Independent expected-value computation,
run_native_fvschedule_gammaln.py, uses Pythonmath.prod(1+rate ...); results were compared with Calc’s actual returned numeric values, with relative tolerance5e-11and absolute tolerance3e-10.