This is a tl;dr from the trains post I made (viewtopic.php?f=6&t=39559), which I split out for because I realized it's really a separate feature with multiple use cases.
Suggestion
Inserters driven with a negative value from the circuit network (filter and otherwise) should reverse-load a resource. That is, they will run backwards, taking resources from the input stack of their destination, and return them to the source, presumably at reduced speed. This solves a large number of interesting problems.
Example: Unstick Deadlocked Inserters
If stack inserters are loading a train with multiple resources, sometimes they can become "stuck" holding a stack they cannot put down and thus are deadlocked. With reversible inserters, logic to automatically unstick all inserters might look something like this:This example uses the SmartTrains mod to detect the presence of a train. The hand contents of the Stack Inserters is being read, multiplied by -1, and then passing through the shown Decider*. When a train leaves, all the inserters are fed a -1 value for the resources they collectively hold, which will cause them to attempt to reverse load them and drop them back into the crates. Thus, once a train leaves, the inserters all "unstick" themselves if they were trapped holding a resource they could not load.
Example: Unload Stuck Furnace
Since reversible inserters unload from the input of their destination when in reverse, they unload inputs to a furnace that would otherwise leave it stuck. Imagine you have a shared furnace that you wish to flip from processing Stone to processing Iron Ore. Since each Stone Brick takes two Stone, there may be one Stone in the input slot, leaving the furnace unable to being processing a source of Iron Ore.In this example, feeding the loading Filter Inserter -1 for Stone Ore causes it to remove the lone Stone Ore from the furnace and deposit it on the far side of the belt. The Filter Inserter then proceeds to attempt to load Iron Ore from the same belt.**
Example: Balance two Chests
This also allows for interesting ways to balance the contents of adjacent chests.The Filter Inserter in this case is being driven with the value (Left Chest - Right Chest). Thus, if there is more of any resource in the Left Chest, the Filter Inserter will move it to the right. If there is a surplus of any resource in the Right Chest, it will see a negative value on the circuit network and thus move that resource to the Left Chest.***
* There's an issue with this layout because the stack inserters are all wired together, and thus their hand contents influence each other. This could be solved using a combinator as a buffer for each one, but I think there's a more general problem in that it's basically impossible to read an inserter hand's content while simultaneously controlling it. There are a number of solutions for that problem.
** Implementation Note: Filter Inserters should always attempt to unload, if possible, before attempting to load.
*** A somewhat more complicated set of combinators could handle the case of an odd number of a resource causing it to bounce back and forth