WaitBlanking missing frames

Can anyone suggest a reason why Screen(windowPtr,'WaitBlanking') might miss vertical
blanking intervals *besides* the BlankingDuration set in
PrepareScreen?

My hardware: A 300 MHz Macintosh G3, a Radeon ATI 9200 graphics card,
and a ViewSonic P95f+ monitor.

My software: MacOS 9.2.2, Matlab 5.2.1.1421, PsychToolbox 2.55.

I have a web page describing one of my tests:

http://www.lifesci.ucsb.edu/~mrowe/MonitorIssuesII.html

including the code I used to test it. I've also just tried:

>> [PeekFrame, PeekTime] = Screen(windowPtr,'PeekBlanking'); ...
Screen(windowPtr,'WaitBlanking',120); ...
[PeekFrame2, PeekTime2] = Screen(windowPtr,'PeekBlanking');

With the monitor refreshing at 120 Hz, that should take 1 second each
time I run it. However, if I run it in a loop 100 times, I will
almost invariably get one run or more where PeekTime2-PeekTime is one
frame time longer than a second. This despite the fact that
PeekFrame2-PeekFrame is always 120.

I have tried setting BlankingDuration both by editing PrepareScreen
and by calling:

Screen(windowPtr,'Preference','BlankingDuration',NewDuration);

No duration I've tried (from 10 microseconds to 30 milliseconds) has
caused any change in this behavior.

If I lower the framerate to 85 Hz, WaitBlanking may not miss any
frames (my tests at that frame rate have not been as extensive, but
I've yet to see a dropped frame at that setting). At 90 Hz I also
don't seem to drop frames, but at 100 Hz I do. I'm using the setup
for physiological experiments in non-human animals, so higher
frame rates are extremely desirable...

If anybody can suggest anything I might not have tried in order to
ensure that all vertical blank signals are caught, I'd appreciate it.

Thanks!

--
Mickey P. Rowe (mrowe@...)