I suspect that the problem is that you do not have constant weights for each PSU. You can check this by summarizing the weight variable by the idhspsu - the minimum and the maximum should be identical in all cases. For example:sort idhspsu
by idhspsu: summ weight
Be warned that the output is going to be very long, and you probably want to capture the output and process it to find if there are PSUs where the weight is not a constant.
An alternative way of doing the same is:sort idhspsu
gen dif = 0
replace dif = 1 if idhspsu == idhspsu[_n-1] & weight != weight[_n-1]
browse if dif == 1
Any case where dif equals 1 indicates a PSU where the weight is not constant.