STR$() actually doesn't make the space. The space is already there. It just doesn't get rid of it. Try print 1. You'll see the 1 is indented one space to the left. Now try print 2. You see the - sign is on the margin, followed by the 1. So the computer language just formats numbers in this manner, preserving a space in case a negative is involved. At least that's my non-schooled take on the matter. As the the trailing space that STR$() does trim off, well, I used to know what that was for, but I have to admit, I've forgotten!
Pete