Both prepositions are correct but have slightly different meanings here, depending on how the author considers the bus. The interpretation also depends on context1.
"On the bus" considers the bus functionally as a form of transport.
"In the bus" emphasises that the bus is a place.
So if I read that someone "fell asleep in the bus", my first impression is that the bus is not in use (maybe it is abandoned somewhere, or maybe the character in the novel broke into the bus company's parking lot and got on a bus at night).
If I read instead that someone "fell asleep on that bus", I imagine it to be a bus that is in use as transportation, so the character caught the bus and fell asleep while it travelled to its destination.
(so far as I can think, this use of on is limited to forms of transportation. One can be on a bus, on a ship or on a plane, while actually being inside. As others have pointed out, if you said you were "on that house" you would be standing on the roof.
- It is possible to be on a bus that is not in service and vice versa, but that is unusual and requires additional context.
"She will come to your age" sounds a bit awkward. Maybe something like "When she turns your age" or even "When she turns 40" would work better so that it doesn't sound ambiguous.
After that you could say "you may/might have already died" though I would prefer "you may/might already be dead".
So your full sentence could be:
"When she turns 40, you may/might already be dead."
Other ways to say this same thing are:
"By the time she turns 40, you may already be dead."
or
"You may be dead by the time she turns 40."
In essence, I think the "have" is awkward and there are better ways to get your intentions across. Adding "already" helps buffer that.
I would have preferred to ask questions in the comments but I don't have the rep. I'm by no means an English expert - just your average native speaker - so take this with a grain of salt.
Looking @SovereignSun's answer will give you more technical reasoning that I couldn't give you.
Best Answer
Your sentence #2 is not grammatically correct. We would say "I have not been there in three years." (You will notice that both of the examples on the web page use the present perfect, not the simple past.)
for refers to the span of time at any point - that is, any three years. in refers to the most recent span of time, like the most recent span of time.
If you want to make a negative version of sentence #1, you would say "I was not there for three years." (That is, maybe you were there for one year, or for five years, but not three years.)
If you say "I have not been there in three years" it means "I have not been there during the most recent three years."