How to generalize upper and lower bounds rules

I want to create a rule on finding the upper and lower bound of a number.

Examples:

For $$29.8$$ (3 s.f.) we write $$1$$ in the place of the $$8$$ and zero in every other position, giving us $$0.01$$. After that we divide $$\frac{0.01}{2} = 0.005$$ and use that number to add and subtract $$29.8$$ by, giving us $$29.75$$ and $$29.85$$ as the lower and upper bounds, respectively.

For $$0.661$$ (3 s.f.) we leave the $$1$$ in its place and zero in every other position, giving us $$0.001$$. After that we divide $$\frac{0.001}{2} = 0.0005$$ and use that number to add and subtract $$0.661$$ by, giving us $$0.6615$$ and $$0.6605$$ as the lower and upper bounds, respectively.

My question is why does this method fail on the following question: Find the upper and lower bounds of $$1000$$ (one s.f.)?

The method would give us $$1500$$ and $$500$$ whereas the correct answer is $$1500$$ and $$950$$ respectively.

It fails because your rounded number is a power of $$10$$
You would for example have a similar issue with $$0.0100$$ as three significant figures: the bounds would be $$0.01005$$ and $$0.009995$$ rather than $$0.00995$$ (spot the extra $$9$$)
So your rule needs to check you are starting from a power of $$10$$. If so, the amount to subtract for the lower bound is a tenth of the amount to add for the upper bound