We present a distributed algorithm for allocating power among multiple interfering transmitters in a wireless network using Orthogonal Frequency Division Multiplexing (OFDM). The algorithm attempts to maximize the sum over user utilities, where each user's utility is a function of his total transmission rate. Users exchange interference prices reflecting the marginal cost of interference on each sub-channel, and then update their power allocations given the interference prices and their own channel conditions. A similar algorithm was studied earlier assuming that each user's utility function is a separable function of the user's rate per sub-channel. Here, we do not assume this separability. We give a different algorithm for updating each user's power allocation and show that this algorithm converges monotonically. Numerical results comparing this algorithm to several others are also presented.