weighted_average now handles negative sample bookkeeping automatically