First off, I just want to point out that you're checking if number of lives is above -1, not 0, since you're using the "greater than or equal to" sign instead of just the "greater than" sign.
If that part of the code does what you want it to do, great. That just means I've misunderstood the logic.
But right now, I don't see much of the floor generation, so I can't tell you where you went wrong with ensuring there's a floor there.
As for the ball generation logic, what I see is this:
You have to have balls active to go through in the foreach block.
If you have balls active, the "repeat until alive" won't trigger at all, since alive and active is the same for the programming purposes.
That means no ball will be created, because there is either already a ball alive, so the "repeat until" block won't trigger, or there is no ball active, so the "for each of type ball" won't trigger.
As for the issue with not having a lowest floor, you could just make sure there's always a floor at the bottom. Maybe a very short one, that you can use as a starting position of each stage.