Just as likely it was a feature. If you really think "that'll never happen", then the right thing to do is explicitly ignore negative prices or refuse to send orders at negative prices, and that's exactly the kind of failsafe I'd want to have in my trading software, since you can get spurious prices for all kinds of reasons.
It turned out the assumption was wrong and yeah, you should remove the logic handling that once it's evident futures may go negative, and you should have a process capable of making that change with only a day or two notice. But being robust the rest of the time at the expense of mishandling a once-in-fifty-years event is not in itself a bug.
If you disagree, should a trading system also allow negative prices for precious metals futures? Stocks? Currencies? Options? Bonds? Futures on stocks or bonds? I can contemplate all of those trading negative in extraordinary, contrived scenarios but I would design systems today not to trade them at negative prices.
But the fact that they didn't display negative prices to customers indicates that they were explicitly ignoring them in a very very bad way. I'm suspecting an abs() function was involved.
It turned out the assumption was wrong and yeah, you should remove the logic handling that once it's evident futures may go negative, and you should have a process capable of making that change with only a day or two notice. But being robust the rest of the time at the expense of mishandling a once-in-fifty-years event is not in itself a bug.
If you disagree, should a trading system also allow negative prices for precious metals futures? Stocks? Currencies? Options? Bonds? Futures on stocks or bonds? I can contemplate all of those trading negative in extraordinary, contrived scenarios but I would design systems today not to trade them at negative prices.