Good QOD. This rounding quirkiness is why I've made a habit of avoiding BETWEEN with datetime types. If you have to use BETWEEN, then be aware that the inclusive end-point for a date must end with .997, or .998 if you really want to be crazy, but not .999. That's so completely counter-intuitive that you'd better have a good reason to use that syntax. Rather, I'd suggest you code to specify the start and end of a range with separate conditions.
declare @startDate datetime
declare @endDate datetime
set @startDate = '2011-09-01'
set @endDate = '2011-10-31'
Select ID, tranTime from SomeTable
where TranTime >= @startDate
and TranTime < @endDate + 1
-----edit: compare to @startdate with >=, not just > (Did I miss that, or did the SSC formatter mess with it? Dunno, but I had to correct.