If I open a new project and set the mode to 1080p 59.94 and set the length of a transparent clip to 00:01:00;00 it will actually reset to 00:01:00;04 if I try to scroll past the one-minute mark. Changing the mode to 1080p 60 will remove the last four frames and the time will show as 00:01:00;00.
I know it has something to do with the frame counts but I don’t quite understand why it add four frames to the end only.
This is the difference between drop frame time code and non-drop frame time code. Four frames were not added to the end; four frames of time code (not actual video frames) were subtracted from the beginning of the next minute of time.
The basic issue is that 59.94 is a fractional frame rate that will not be in sync with a wall clock. “Drop frame time code” was invented to label frames with time code in a way that would sync with a wall clock. This means skipping units of time in a predictable manner to bring them in sync. From Wikipedia:
drop-frame SMPTE timecode was invented. In spite of what the name implies, no video frames are dropped or skipped when using drop-frame timecode. Rather, some of the timecodes are dropped. In order to make an hour of timecode match an hour on the clock, drop-frame timecode skips frame numbers 0 and 1 of the first second of every minute, except when the number of minutes is divisible by ten.
Their explanation was for 29.97 video. Since you have 59.94 video which is twice as fast, then twice as many frames are skipped per minute (hence 00:00:01;04… frames 0-3 were skipped).
When using 60fps, it does not require any hackery with the time codes to sync with a wall clock. It just works because the frame rate is a whole number, not a fraction. This is called non-drop frame time code because no frames are dropped in the frame-labeling process.
A semicolon in the time code is an indicator that drop frame time code is in effect. A colon means non-drop frame time code is used.