A weighted digraph is balanced if, for each node, the sum of the weights of the edges outgoing from that node is equal to the sum of the weights of the edges incoming to that node. Weight-balanced digraphs play a key role in a number of applications, including cooperative control, distributed optimization, and distributed averaging. We propose distributed algorithms that operate over static topologies, for solving the weight-balancing problem when the weights are either non-negative real numbers or when they are restricted to be non-negative integers. For the case of real weights, the proposed algorithm is shown to admit a geometric convergence rate. For the case of integer weights, the proposed algorithm is shown to converge after a finite number of iterations that we explicitly bound. We also provide examples to illustrate the operation, performance, and potential advantages of the proposed algorithms.