We consider the problem of scheduling multiple users sharing a time-varying wireless channel. (As an example, this is a model of scheduling in 3G wireless technologies, such as CDMA2000 3G1xEV-DO downlink scheduling.) We introduce an algorithm which seeks to optimize a concave utility function ∑ i. H i(R i] of the user throughputs R i, subject to certain lower and upper throughput bounds: R i min ≤ R i ≤ R i max. The algorithm, which we call the Gradient algorithm with Minimum/Maximum Rate constraints (GMR) uses a token counter mechanism, which modifies an algorithm solving the corresponding unconstrained problem, to produce the algorithm solving the problem with throughput constraints. Two important special cases of the utility functions are ∑ i log R i and ∑ i R i, corresponding to the common Proportional Fairness and Throughput Maximization objectives. We study the dynamics of user throughputs under GMR algorithm, and show that GMR is asymptotically optimal in the following sense. If, under an appropriate scaling, the throughput vector R(t) converges to a fixed vector R* as time t → ∞ then R* is an optimal solution to the optimization problem described above. We also present simulation results showing the algorithm performance.