I don't use the date and time identifiers very often, I thought $gmt returned a value in a hh:nn:ss format but I see now it doesn't :P I tested it by changing the date of my PC to 26/3/12 (day after the clocks go forward an hour here) and it returned the correct value, but I've just realised it didn't change the time automatically when I did it that way, so yeah you don't need $daylight :P
A simple:
alias pst { return $asctime($calc($gmt - (8 * 86400)),hh:nn:ss) }
Will do :P
Cheers