In R12, I resolved this by creating an alternate key for negative values...keeping the original key for positive values. Additionally, I created new Weighting Value field in my target object's table to be the absolute value of the original value Used for allocation weighting. Likewise, I set my weighting in the allocation definition to use the new Weighting Value column. After confirming the positive values we're allocating, I created another allocation line for the negative values referencing the "alternate" key and same Weighting Value column.
Works like a charm...in R12! ;-)