Ozzit: Excel LAMBDA functions for Australian modelling

133 functions and 5 help tables for GST, financial years, depreciation, loans and leases. Open the workbook and try a formula; every definition is visible in Excel.

Download Ozzit v3.4.2 Browse worked formulas

XLSX, 439,097 bytes. Needs Microsoft 365 or Excel 2024 or later. No add-in or macro.

Current release v3.4.2, published 20 September 2026, verified 20 September 2026. Release record and verification on GitHub.

Published 18 September 2026. Last reviewed 28 September 2026.

Extract GST from $1,100

=oz.GSTExtractλ(1100)

100.00 displayed to two decimal places

Assumes a wholly taxable, GST-inclusive amount at 10%. Read the workings, the Excel check and the limits.

What Ozzit is

An Excel workbook, not a program. Open it, copy a function into your own model, and the formula travels with the file. Every definition is a native LAMBDA stored as a defined name, so the arithmetic stays inside the workbook where a reviewer can read it.

The v3.4.2 workbook carries 138 named formulas: 133 LAMBDA functions and 5 help tables that document them inside the workbook. Each module also ships an editable demonstration worksheet, and the formula source is published as plain text in the repository’s src/ folder and indexed in functions.csv.

The Australian helpers are deliberately small: GST addition and extraction at 10%, a 1 July financial year label, 2 modelling depreciation schedules and 4 AASB 16 lessee schedules. The rest of the library is general financial modelling.

Who it is for and what it needs

It suits an accountant or analyst who builds models in Excel and wants the working visible rather than hidden in an add-in or a macro. It is not a bookkeeping tool, and it never touches a ledger.

What the workbook needs. Scroll sideways on small screens.
RequiresMicrosoft 365 or Excel 2024 or later, with LAMBDA and dynamic arrays
Does not run inLibreOffice and Excel versions before 2024, which cannot evaluate the functions
ContainsNo VBA, no macros, no add-in and no external link
LicenceMIT, covering the workbook, the formula source and the function index
AuthorRyan Duguid. Built from scratch, with provenance recorded in the repository

Ten worked formulas

Open an example for its arguments, formula, expected display and limits. These examples describe v3.4.2 and need Microsoft 365 or Excel 2024 or later. Enter them in the Ozzit workbook with space for any spilled result.

All ten were evaluated in Excel 16.0 build 20430 on 25 September 2026 against the unchanged released workbook. Read the inputs and raw results. The check verifies these calculations, not an accounting treatment.

Extract GST from an inclusive amount

oz.GSTExtractλ: Returns the GST contained in one or more GST-inclusive amounts.

Signature: GSTExtractλ(Amounts, [Rate]). Square brackets mark optional arguments.

=oz.GSTExtractλ(1100)

Expected display: 100.00, displayed to two decimal places.

Limits: Assumes the whole amount is taxable at 10%. The function returns an unrounded binary floating-point result. Use ROUND(...,2) where cent rounding is required; the reviewer decides the treatment.

Link to this example · Released formula source, Extract GST from an inclusive amount

Add GST to an exclusive amount

oz.GSTAddλ: Adds GST to one or more GST-exclusive amounts.

Signature: GSTAddλ(Amounts, [Rate]). Square brackets mark optional arguments.

=oz.GSTAddλ(1000)

Expected display: 1,100.00, displayed to two decimal places.

Limits: Assumes a wholly taxable amount and the default 10% rate. This does not classify a supply or establish a credit entitlement.

Link to this example · Released formula source, Add GST to an exclusive amount

Label an Australian financial year

oz.FinancialYearλ: Labels dates with their Australian financial year, which starts on 1 July

Signature: FinancialYearλ(Dates, [StartMonth]). Square brackets mark optional arguments.

=oz.FinancialYearλ(DATE(2026,8,15))

Expected display: FY2027.

Limits: The default start month is July. Supply StartMonth for another year end; the function labels a date and does not determine a reporting obligation.

Link to this example · Released formula source, Label an Australian financial year

Build a straight-line modelling schedule

oz.PrimeCostλ: Straight-line depreciation schedule for one asset or asset class, in whole years. A modelling schedule, not a tax calculation.

Signature: PrimeCostλ(Cost, Life). Square brackets mark optional arguments.

=oz.PrimeCostλ(1000,5)

Expected display: 200.00, 200.00, 200.00, 200.00 and 200.00; total 1,000.00.

Limits: Cost and life are supplied assumptions. This is a modelling schedule, not an ATO Division 40 tax calculation.

Link to this example · Released formula source, Build a straight-line modelling schedule

Build a diminishing-balance modelling schedule

oz.DiminishingValueλ: Diminishing-balance depreciation schedule at 200% of the straight-line rate, writing the residual off in the final period. A modelling schedule, not a tax calculation.

Signature: DiminishingValueλ(Cost, Life). Square brackets mark optional arguments.

=oz.DiminishingValueλ(1000,5)

Expected display: 400.00, 240.00, 144.00, 86.40 and 129.60; total 1,000.00.

Limits: Uses 200% of the straight-line rate and writes off the remaining balance in the final year. It does not establish a tax deduction.

Link to this example · Released formula source, Build a diminishing-balance modelling schedule

Inspect the first month of a loan schedule

oz.Amortiseλ: Creates a corkscrew amortisation schedule

Signature: Amortiseλ( Principals, APRs, Terms, StartDates, [Timeline]). Square brackets mark optional arguments.

=TAKE(oz.Amortiseλ(100000,0.05,60,DATE(2026,7,1)),,1)

Expected display: Debt issued 100,000.00; opening 100,000.00; interest 416.67; payment -1,887.12; closing 98,529.54; principal repaid 1,470.46. Each figure is displayed to two decimals.

Limits: A 100,000 loan at 5% over 60 monthly payments. TAKE selects the first column of the six-row schedule. Remove TAKE to spill the full schedule; confirm the loan terms and timing separately.

Link to this example · Released formula source, Inspect the first month of a loan schedule

Discount three unpaid lease payments

oz.LeaseLiabilityλ: Present value of the lease payments that are not paid at the commencement date

Signature: LeaseLiabilityλ(Payments, Rate, [InAdvance]). Square brackets mark optional arguments.

=oz.LeaseLiabilityλ({100,100,100},0.05)

Expected display: 272.32, displayed to two decimal places.

Limits: The 5% rate is per payment period and the payments are in arrears. The reviewer establishes the lease term, included payments and applicable discount rate.

Link to this example · Released formula source, Discount three unpaid lease payments

Convert an effective annual rate

oz.PeriodRateλ: Converts an effective annual rate to the equivalent rate per period, the rate the lease functions take

Signature: PeriodRateλ(AnnualRate, [PeriodsPerYear]). Square brackets mark optional arguments.

=oz.PeriodRateλ(0.05,12)

Expected display: Approximately 0.4074% per month.

Limits: The input is a 5% effective annual rate. This conversion is not the same as dividing a nominal annual rate by 12.

Link to this example · Released formula source, Convert an effective annual rate

Calculate rates for dated periods

oz.DayCountRateλ: Interest rate for each period of a timeline under a day count convention: 30/360, Actual/360, Actual/365 or Actual/Actual

Signature: DayCountRateλ(Timeline, APR, [Convention], [EndDates]). Square brackets mark optional arguments.

=oz.DayCountRateλ(EDATE(DATE(2026,7,1),{0,1,2}),0.073)

Expected display: 0.0062, 0.0062 and 0.0060 for the three periods.

Limits: The default is Actual/365. Supply the required convention and check how the final period is inferred; the function does not choose a contractual day count basis.

Link to this example · Released formula source, Calculate rates for dated periods

Calculate an annual return from dated cash flows

oz.IRRλ: Calculates IRR, correcting for when the first investment is not in the first period

Signature: IRRλ( Values, Dates). Square brackets mark optional arguments.

=oz.IRRλ({-1000,1100},HSTACK(DATE(2026,7,1),DATE(2027,7,1)))

Expected display: 10.00%, displayed to two decimal places.

Limits: One outflow of 1,000 followed by an inflow of 1,100 one year later. Other cash flow patterns may have multiple or no solutions; inspect the inputs and validate the result.

Link to this example · Released formula source, Calculate an annual return from dated cash flows

All 138 named formulas

Each module below lists the names its source file defines in the v3.4.2 workbook, with the released signature of each. Square brackets mark optional arguments.

Download the full v3.4.2 function index (CSV) for a one-line description of each, or read it on GitHub.

Financial, 46 named formulas

  • oz.AboutFinancialλ
  • oz.Allocateλ(Amounts, [FromInterval], [ToInterval])
  • oz.Amortiseλ( Principals, APRs, Terms, StartDates, [Timeline])
  • oz.AmortiseλDV
  • oz.AnnualRateλ(PeriodRate, [PeriodsPerYear])
  • oz.CorkScrewReversalλ( Opening, ReversalFlags, Flow1, [Flow2], [Flow3], [Flow4])
  • oz.Corkscrewλ( Opening, Flow1, [Flow2], [Flow3], [Flow4])
  • oz.CorkscrewλDV
  • oz.Cumulativeλ( Totals, [OpeningBalance])
  • oz.DBλ(Cost, Salvage, Life, [Months])
  • oz.DDBλ(Cost, Salvage, Life, [Factor])
  • oz.DayCountRateλ(Timeline, APR, [Convention], [EndDates])
  • oz.Depreciateλ(InitialValues, InServiceDates, LifeInYears, Timeline, [SalvageValues], [DisposalDates], [DisposalCosts], [Methods], [Factors])
  • oz.DepreciateλDV
  • oz.DiminishingValueλ(Cost, Life)
  • oz.FilterContainsλ( ArrayToFilter, FilterByArray, FilterByText, [IgnoreCase?] )
  • oz.GSTAddλ(Amounts, [Rate])
  • oz.GSTExtractλ(Amounts, [Rate])
  • oz.IRRλ( Values, Dates)
  • oz.IntOnIntλ( Principal, Rate)
  • oz.LabelAmortiseλ(LoanNames, [LoanAmounts], [LoanAPRs], [LoanTerms])
  • oz.LabelDepreciateλ( AssetNames)
  • oz.LeaseLiabilityλ(Payments, Rate, [InAdvance])
  • oz.LeaseRemeasureλ(RevisedPayments, Rate, CarryingLiability, CarryingROU, [InAdvance])
  • oz.LeaseScheduleλ(Payments, Rate, [InAdvance])
  • oz.Movementλ( [BeginningValues], Values)
  • oz.PeriodDiffλ(StartDate, EndDate, Interval)
  • oz.PeriodRateλ(AnnualRate, [PeriodsPerYear])
  • oz.PeriodStartλ(AnyPeriodStart, MonthsPerPeriod, DateOfInterest)
  • oz.PrimeCostλ(Cost, Life)
  • oz.ROUScheduleλ(Cost, Periods)
  • oz.RangeToDAλ( Cell, [Rows], [Columns])
  • oz.Reversalλ( [OpeningValue], RowToReverse)
  • oz.RollingAvgλ( Values, Size)
  • oz.RollingMaxλ( Values, Size)
  • oz.RollingMinλ( Values, Size)
  • oz.RollingSumλ( Values, Size)
  • oz.SLNλ(Cost, Salvage, Life)
  • oz.SYDλ(Cost, Salvage, Life)
  • oz.SumAmortiseλ(AmortisationSchedule)
  • oz.SumContainsλ(ValuesToFilter, ValueLabels, FilterByText, [IgnoreCase?])
  • oz.SumDepreciateλ(DepreciationSchedule)
  • oz.SumPeriodsλ( Values, Dates, PeriodStarts)
  • oz.TimelineOffsetλ(Date, Timeline)
  • oz.TimelinePositionλ(Array, Timeline, Offset)
  • oz.VDBλ(Cost, Salvage, Life, [Factor], [No_Switch])

Released Financial source

Ratios, 39 named formulas

  • oz.AboutRatiosλ
  • oz.AssetTurnoverRatioλ( NetSales, TotalAssets)
  • oz.BVPSλ( ShareholdersEquity, PreferredStock, AverageSharesOutstanding )
  • oz.CAPERatioλ( SharePrice, TenYearAverageEarningsInflationAdjusted )
  • oz.CashFlowMarginλ( CashFlowFromOperatingActivities, Revenue)
  • oz.CashRatioλ( Cash, Liabilities)
  • oz.CurrentRatioλ( Assets, Liabilities)
  • oz.DPRλ( DividendsPaid, NetIncome )
  • oz.DSCRλ( NetOperatingIncome, TotalDebtService)
  • oz.DSIλ( AverageInventory, CostOfGoodsSold)
  • oz.DebtRatioλ( TotalDebt, TotalAssets)
  • oz.DebtToAssetRatioλ( TotalDebt, TotalAssets)
  • oz.DebtToCapitalRatioλ( Debt, ShareholdersEquity)
  • oz.DebtToEquityRatioλ( TotalLiabilities, ShareholdersEquity)
  • oz.DividendYieldRatioλ( AnnualDividendsPerShare, SharePrice)
  • oz.EBITDAMarginλ( EBITDA, TotalRevenue)
  • oz.EPSλ( NetIncome, PreferredDividends, EndOfPeriodCommonSharesOutstanding)
  • oz.EquityMultiplierλ( TotalAssets, TotalShareholdersEquity)
  • oz.EquityRatioλ( ShareholdersEquity, TotalAssets, IntangibleAssets)
  • oz.GrossMarginλ( GrossProfit, NetSales)
  • oz.InterestCoverageRatioλ( OperatingIncome, InterestExpenses)
  • oz.InventoryTurnoverRatioλ( CostOfGoodsSold, AverageInventory)
  • oz.NetProfitMarginλ( NetIncome, Revenue)
  • oz.OperatingCashFlowRatioλ( OperatingCashFlow, Liabilities)
  • oz.OperatingMarginλ( OperatingEarnings, Revenue)
  • oz.OperatingRatioλ( OperatingExpenses, CostOfGoodsSold, NetSales)
  • oz.PretaxMarginλ( PretaxEarnings, Revenue)
  • oz.PriceEarningsRatioλ( SharePrice, EarningsPerShare)
  • oz.PriceToBookRatioλ( MarketPricePerShare, BookValuePerShare)
  • oz.PriceToCashRatioλ( MarketPricePerShare, OperatingCashFlowPerShare)
  • oz.PriceToSalesRatioλ( MarketPricePerShare, SalesPerShare)
  • oz.QuickRatioλ( QuickAssets, Liabilities)
  • oz.ROAλ( NetIncome, TotalAssets)
  • oz.ROEλ( NetIncome, ShareholdersEquity, [OpeningEquity])
  • oz.ROICλ( NetOperatingProfitAfterTax, InvestedCapital)
  • oz.ROIλ( NetReturnonInvestment, CostofInvestment)
  • oz.ReceivablesTurnoverRatioλ( NetCreditSales, AverageAccountsReceivable)
  • oz.RetentionRatioλ( RetainedEarnings, NetIncome )
  • oz.WorkingCapitalTurnoverRatioλ( NetAnnualSales, WorkingCapital)

Released Ratios source

Essentials, 17 named formulas

  • oz.AboutEssentialsλ
  • oz.AvgColsλ( Array)
  • oz.AvgRowsλ( Array)
  • oz.CountAColsλ( Array )
  • oz.CountARowsλ( Array)
  • oz.CountColsλ( Array)
  • oz.CountCλ( Text, Characters)
  • oz.CountRowsλ( Array)
  • oz.IsBetweenEλ( Value, Low, Hi, [Inclusive])
  • oz.IsInListλ( Value, List)
  • oz.MaxColsλ( Array)
  • oz.MaxRowsλ( Array)
  • oz.MinColsλ( Array)
  • oz.MinRowsλ( Array)
  • oz.RangeToDAEλ(Range, [Rows], [Columns])
  • oz.SumColsλ( Array)
  • oz.SumRowsλ( Array)

Released Essentials source

Utilities, 17 named formulas

  • oz.AboutUtilitiesλ
  • oz.AvgColsUλ( Array)
  • oz.AvgRowsUλ( Array)
  • oz.CountAColsUλ( Array )
  • oz.CountARowsUλ( Array)
  • oz.CountCUλ( Text, Characters)
  • oz.CountColsUλ( Array)
  • oz.CountRowsUλ( Array)
  • oz.IsBetweenUλ( Value, Low, Hi, [Inclusive])
  • oz.IsInListUλ( Value, List)
  • oz.MaxColsUλ( Array)
  • oz.MaxRowsUλ( Array)
  • oz.MinColsUλ( Array)
  • oz.MinRowsUλ( Array)
  • oz.RangeToDAUλ(Range, [Rows], [Columns])
  • oz.SumColsUλ( Array)
  • oz.SumRowsUλ( Array)

Released Utilities source

Dates, 14 named formulas

  • oz.AboutDatesλ
  • oz.CountDOWλ(Starts, Ends, DayOfWeek)
  • oz.DateDifλ(StartDate, EndDate, [Unit])
  • oz.FinancialYearλ(Dates, [StartMonth])
  • oz.IsBetweenλ(Values, Low, High, [Inclusive])
  • oz.IsOccurrenceDateλ(Dates, FirstOccurrence, [LastOccurrence], [Repeats])
  • oz.OverLapDaysλ(Period1Start, Period1End, Period2Start, Period2End)
  • oz.PeriodLabelλ(Date, [Interval])
  • oz.Periodsλ(Starts, Ends, [Intervals])
  • oz.ScheduleRatesByItemsλ(PeriodEnds, ItemFilter, ItemList, EffectiveList, RateList)
  • oz.ScheduleRatesλ(PeriodEnds, RateStarts, Rates)
  • oz.ScheduleValuesByItemsλ(PeriodStarts, PeriodEnds, ItemFilter, ItemList, EffectiveList, ValueList)
  • oz.ScheduleValuesλ(PeriodStarts, PeriodEnds, Values, EffectiveDates)
  • oz.Timelineλ(StartDate, Periods, Interval, PeriodStarts?)

Released Dates source

Debt, 5 named formulas

  • oz.AmortiseBλ(Principal, APR, Term, ModelPeriods, [StartPeriod], [MonthsPerPeriod])
  • oz.DebtSculptFixedλ([OpeningBalance], Debt, CFADS, DSCR, APR, [MonthsPerPeriod])
  • oz.DebtSculptVariableLRVλ([OpeningBalance], Debt, CFADS, DSCR, APR, [MonthsPerPeriod], [PeriodRates])
  • oz.DebtSculptVariableλ([OpeningBalance], Debt, CFADS, DSCR, APR, [MonthsPerPeriod], [PeriodRates])
  • oz.InterestLRVλ(CFADS, DSCR, Principal, InterestRate)

Released Debt source

One worked example

Take $1,100 that is assumed to be wholly taxable and GST-inclusive at 10%. Enter this formula in a cell of the Ozzit workbook:

=oz.GSTExtractλ(1100)

The result is 100.00. Check: 1100 / 11 = 100.00.

That is the whole of the function’s contribution: 10% arithmetic on an amount you supply.

Whether the supply is wholly taxable, whether a tax invoice supports it and whether the credit is claimable in that period are decisions for the reviewer. The function cannot see the evidence and does not classify the supply.

The 25 September 2026 native Excel record evaluates this formula against the exact v3.4.2 release workbook. It returned 99.999999999999986 before display rounding. The file hash was unchanged after the check. The repository also retains its historical v3.2.0 screenshot record.

Download and use it

Needs Microsoft 365 or Excel 2024 or later. Nothing is installed.

To use a function in your own file, copy the cell that calls it, or copy the definition from the workbook’s name manager into your model. The function then belongs to your workbook and stays with it. Cite the library with the metadata in the v3.4.2 CITATION.cff, which names the release this page documents. The default branch may already carry a later version.

Release verification

Release v3.4.2 was built from a signed tag and gated before publication. On 20 September 2026, in Excel 16.0 build 20430:

  • 1,129 formulas recalculated with 0 in error.
  • 905 assertions ran with 0 failures: 603 written by hand, 23 of them randomised against independent formulas, and 302 generated from the workbook’s own help.
  • 19,444 cached values were confirmed to equal what their formulas produce.
  • 246 unit tests passed, and the published formula source reproduced all 138 named formulas.

Those checks establish that the workbook calculates what its definitions say. They do not establish that a given accounting treatment is correct.

Limits

Not tax, legal or financial advice. The functions calculate; a person decides the accounting treatment and signs off.

  • The GST helpers do 10% arithmetic only. They do not classify a supply, test registration or prepare a BAS.
  • oz.PrimeCostλ and oz.DiminishingValueλ are modelling schedules. They are not ATO Division 40 methods and they do not implement immediate write-off or low-value pools.
  • The AASB 16 functions are lessee arithmetic. They do not decide the lease term, what counts as a lease payment or whether an arrangement contains a lease, and they do not cover lessor accounting or the short-term and low-value exemptions.
  • The library contains no individual income tax, Medicare levy, Division 7A interest or tax rate cards.
  • The 13-week cash flow workbook in the repository’s templates folder is a separate template, not a function in this library.
  • Known defects are listed in the repository’s changelog and issues. Check a schedule against an independent calculation before relying on it.

Common questions

What is Ozzit?

An Excel workbook containing 133 native LAMBDA functions and 5 help tables for financial modelling under Australian conventions, published free under the MIT licence. It has no add-in, macro or external dependency.

Which Excel versions can run it?

Microsoft 365 or Excel 2024 or later, which support LAMBDA and dynamic arrays. LibreOffice and earlier Excel versions cannot evaluate the functions.

Does Ozzit calculate Australian tax?

No. It performs 10% GST arithmetic and labels Australian financial years, and its depreciation and lease functions are modelling schedules rather than ATO or standard-setting methods. It contains no income tax, Medicare levy or Division 7A calculations.

Where do I get the current release?

Release v3.4.2, published on 20 September 2026, ships ozzit.xlsx with a SHA256SUMS file and a provenance record on its GitHub release page. Compare the downloaded file’s SHA-256 with the published value before use.