I was on the way out when I posted above, so now I have a bit more time.
A couple of important questions.
1. How big are the packages?
2. What is the distance between divert positions?
3. What is the distance from the point where the destination is coded to the first divert.
4. Can the 'boxes' get stuck, i.e are jams a possibility.
FIFO's can be used for tracking, but if they are used you need to put safeguards to allow for missing objects or objects dropped on.
It maybe that your tracking area could be managed without an encoder and without worrying about the effects of stopping and starting (this has a big effect on tracking).
I notice there is no initial synchronization sensor, without this you cannot have an encoder in any case. The initial synchronization sensor would synchronize your object into the tracking zone, without this the encoder would be useless.
With or without the encoder, I would have 4 tracking zones, this would mean to you 4 FIFO's. The first zone would be from the pushbuttons to the first sensor, the other zones would be between the sensors. (edit, 3 zones as there's only 3 diverts)
When an object is detected at the first sensor, pull the next destination from the FIFO (the oldest), if it is for this destination divert the object and zero down the register holding the destination. If it is not for this destination, do not divert and put the destination into the next FIFO and zero the destination word.
Without seeing the conveyor, size, distances and objects, I cannot say whether its advisable to do it this way or not.