  Probability proportional to size (PPS) sampling schemes with a target sample
size aim to produce a sample comprising a specified number $n$ of items while
ensuring that each item in the population appears in the sample with a
probability proportional to its specified "weight" (also called its "size").
These two objectives, however, cannot always be achieved simultaneously.
Existing PPS schemes prioritize control of the sample size, violating the PPS
property if necessary. We provide a new PPS scheme that allows a different
trade-off: our method enforces the PPS property at all times while ensuring
that the sample size never exceeds the target value $n$. The sample size is
exactly equal to $n$ if possible, and otherwise has maximal expected value and
minimal variance. Thus we bound the sample size, thereby avoiding storage
overflows and helping to control the time required for analytics over the
sample, while allowing the user complete control over the sample contents. The
method is both simple to implement and efficient, being a one-pass streaming
algorithm with an amortized processing time of $O(1)$ per item.
