The TIME macro is specified to “pass trough” the value of whatever it runs. In this way, it is like PRINT (i.e. you can wrap TIME or PRINT around anything without changing the internal dataflow—they do add stuff to the output though).  (time (foo)) returns whatever (foo) would return.
The specification provides no hard requirements as to what information is printed, that part is implementation specific.
Depending on your requirements, you might be better off looking for a profiling package (SBCL has a couple, I believe). Otherwise, you might like to look at GET-INTERNAL-RUN-TIME, GET-INTERNAL-REAL-TIME, and INTERNAL-TIME-UNITS-PER-SECOND.