use negative weights, and fix to allow running on ttsl