As far as booking far in advance, I usually try to to get the best price. But I never get the ticket printed until the day of departure, just in case I need to make any last minute changes, which has occasionally happened. If your ticket hasn't been issued, changing it around is much easier. About 2 years ago, I had booked a ticket on the Crescent from NYC to New Orleans in a roomette. Wanting to get the best price, I went on amtrak.com and played around with many dates, and finally booked a trip about 3 months ahead of departure. The trip was for August, and the best price I found was around $650.00 one way, which was very high for that trip, but I had to go around that time. Of course, in the months before, I checked the website often, and the price was always the same, right up until the week before my departure date.
One day I looked and was amazed to find a fare of $286.00 for a roomette, leaving the week before my trip!
I immediately booked the chaper fare and cancelled my other ticket. Because it was more than seven days from my original departure, I was able to get my orignal ticket refunded. So, after frantically changing around my hotel and car rental reservations, I had re-booked my entire trip for a week earlier, saving almost $400 on Amtrak!
So, sometimes, it is very possible to get low fares at the last minute. The real trick is to familiarize yourself with the average fares of the trip you want to take, that way you will know a really good low fare when you see it.
Just my 2 cents as always......
David