anchor.diff:  		Acc, Charged, Reserved) ->
   	case lists:keytake(SessionId, 3, Reservations) of
   		{value, {_, Amount, _}, NewReservations}
  -				when Remain >= (Reserve - (Amount - Charge)),
  +				when Remain > 0, Remain >= (Reserve - (Amount - Charge)),
   				((Expires == undefined) or (Now < Expires)) ->
   			NewReservation = {Now, Reserve, SessionId},
   			NewBuckets = lists:reverse(Acc)
  
positive.code: 			sort(Buckets), [], 0, 0).
  %% @hidden
  update_session(Type, Charge, Reserve, Now, SessionId,
  		[#bucket{termination_date = Expires, reservations = []} | T],
  		Acc, Charged, Reserved) when Expires /= undefined, Expires =< Now ->
  	update_session(Type, Charge, Reserve,
  			Now, SessionId, T, Acc, Charged, Reserved);
  update_session(Type, Charge, Reserve, Now, SessionId,
  
negative.code: 					reservations = [NewReservation | NewReservations]} | T],
  			{Charged + Charge, Reserved + Reserve, NewBuckets};
  		{value, {_, Amount, _}, []}
  				when Remain >= 0, (Remain + Amount) =< Charge,
  				((Expires == undefined) or (Now < Expires)) ->
  			update_session(Type, Charge - (Remain + Amount), Reserve,
  					Now, SessionId, T, Acc, Charged + Remain + Amount, Reserved);
  