Quote:
If the broker API supports limit orders, this guarantees a fill price at or better than the limit
This will normally be true if the limit price is "same or better" than the current.
But in this case it was "worse".
So, the order - already at the broker - got converted to market BY THE BROKER (nothing Zorro can do about it by then).
And in a fast falling market (with liquidity quickly removed on the bid side, i.e.bid price falling even faster) and with latency, you got 'slipped' vs the desired limit price.

Change the limit price to bid-ask mid-point. OrderLimit will then work as intended: if not executed quickly, the order will get cancelled and you can resubmit it again to chase the moving price but still guarantee favourable execution.