Exceptions are always likely/possible. It's a marketing game. I'm talking generally
Whilst the system may generate higher advance fares from its algorithms, a piece of code like this within the "which fares do I offer" loop:
if journey.getAdvanceFare < journey.getWalkupFare:
optionBasket.add(journey.AdvanceOption)
could be provided to ensure they're not offered to the purchaser. That should make it "impossible" to offer a higher or equal advance fare to walk up fare.