It is quite realistic that many users will use type(uint).max as infinity when setting the endTime of their orders so that it stays open indefinitely. However the math (startAmount * remaining) + (endAmount * elapsed) + extraCeiling in https://github.com/ProjectOpenSea/seaport/blob/49799ce156d979132c9924a739ae45a38b39ecdd/contracts/lib/AmountDeriver.sol#L57 will almost always revert in that case since remaining will be very large and this block of code is checked Solidity.
Context: Seaport.sol
Use the new test below and run forge test -m testAdvancedPartialMaxEndTime -vvvv:
Need to find a way to compute the linear interpolation without overflows.
For (a + b) / 2, the trick is a / 2 + b / 2 + (a & b & 1):
https://devblogs.microsoft.com/oldnewthing/20220207-00/?p=106223
Need to find a similar trick for (x * a + y * b) / (x + y).
Worst case it can also be a front end fix.
