I have good research and recommendations, and will probably have a good PGRE as well (at least according to what my practice exams have told me), but my GPA is not that great, at a 3.4. I know that the GPA alone makes me uncompetitive for the top schools. I'm not sure if that would be made up even with a 900+ on the PGRE. So if I want to make up for the GPA, the best course is to either redo the BS or get an MS. The advantages of doing the MS is that these are obviously graduate courses, so I would be able to show that I can handle graduate work. Plus, if I change my plans and decide not to do a PhD, I can get a job after the MS, especially if it's a more applied field (I think; don't quote me on that). However, the GPA received in MS degrees isn't taken as seriously by the PhD admissions because they are curved higher. If I redo the BS, a high GPA in it would be taken more seriously than a high GPA in the MS. I am aware that there can be great professors and labs at schools that are otherwise not ranked well, but it's still in my best interests to go to a top one. I'm also not concerned that I will be at least in my early 30's when I get the PhD. I'm not some entitled child who wishes to simply be handed acceptance to a top school, but I do want to know if the doors of MIT and the likes of it are closed forever to me or if my crime of a low GPA can be forgiven by doing one of those two things. I'm also not going to go do the BS or MS right away; I'll take some time to figure out what I've done wrong and amend my ways to do well the next time around.