You can't achieve this with Excel without making some preetty radical changes.
The MATCH function is working perfectly according to the Help file - according to the arguments supplied, it's looking for the largest value in lookup_array that is less than or equal to lookup_value. It does not perform any comparisons or other functions on the values within lookup_array.
I've managed to get the right answer (according to what you need) on the attached spreadsheet, by doing the following:
Reversing the order of the dates and their forecast quantities
Adding a row of calculated cells to get the running forecast (please note the semi-anchored formula)