Writing

A fixed rate that floated

25 October 2026

A fixed rate and a floating rate are two different products. A floating rate is struck when your deposit confirms, so what arrives depends on the market in the minutes you spent paying. A fixed rate is agreed now and honoured later, and it costs more for exactly that reason.

Choosing fixed here changed the first half of that sentence and not the second.

The choice reached one screen and not the next

The toggle did real work. It travelled to the comparison, every provider was asked for a fixed-rate quote, and the figures that came back were fixed-rate figures — higher cost, as they should be. Somebody choosing fixed saw prices that reflected the choice.

Then the order was created without it. The parameter existed, the adapters accepted it, and the call that mattered simply did not pass it on. Providers default to floating when asked for nothing, so the order was floating.

The result: a person paid a fixed-rate premium, read fixed-rate numbers, and received a floating order. Nothing on either screen was inconsistent with itself.

The same fault, twice, pointing opposite ways

This is the second time this project has shipped a disagreement between what is quoted and what is ordered. The first was a markup present in the order and absent from the quote — the board promising more than the exchange paid. This one is a rate mode present in the quote and absent from the order.

They look like different bugs and they are the same bug: two code paths that must agree about one transaction, with nothing forcing them to. Neither was found by a test, because each half behaved correctly on its own terms. Both were found by reading the two paths side by side and asking what travelled down each.

That is now the standing question whenever a provider is added or changed: what does the quote carry, what does the order carry, and is there anything other than care keeping them the same?

Plan an exchange

Every figure above can be checked against the providers yourself — no account, no sign-up, and nothing is held for you at any point.