diff --git a/libs/ardour/session_time.cc b/libs/ardour/session_time.cc
index 42ae315..7ff6024 100644
--- a/libs/ardour/session_time.cc
+++ b/libs/ardour/session_time.cc
@@ -34,6 +34,7 @@
 
 #include "ardour/session.h"
 #include "ardour/tempo.h"
+#include "ardour/debug.h"
 
 #include "i18n.h"
 
@@ -307,21 +308,31 @@ Session::sample_to_timecode (framepos_t sample, Timecode::Time& timecode, bool u
 	timecode.hours = offset_sample / _frames_per_hour;
 	offset_sample = offset_sample % _frames_per_hour;
 
+	DEBUG_TRACE (DEBUG::Transport, string_compose ("TC when: %1\n", offset_sample));
+
 	// Calculate exact number of (exceeding) timecode frames and fractional frames
 	timecode_frames_left_exact = (double) offset_sample / _frames_per_timecode_frame;
 	timecode_frames_fraction = timecode_frames_left_exact - floor( timecode_frames_left_exact );
 	timecode.subframes = (int32_t) rint(timecode_frames_fraction * config.get_subframes_per_frame());
 
+	DEBUG_TRACE (DEBUG::Transport, string_compose ("TC EXACT: %1 (subframes: %2/%3) FPS: %4\n",
+				timecode_frames_left_exact,
+				timecode.subframes, config.get_subframes_per_frame(),
+				timecode_frames_per_second ()));
+
 	// XXX Not sure if this is necessary anymore...
 	if (timecode.subframes == config.get_subframes_per_frame()) {
 		// This can happen with 24 fps (and 29.97 fps ?)
 		timecode_frames_left_exact = ceil( timecode_frames_left_exact );
 		timecode.subframes = 0;
+		DEBUG_TRACE (DEBUG::Transport, "TC round up !!\n");
 	}
 
 	// Extract hour-exceeding frames for minute, second and frame calculations
 	timecode_frames_left = (uint32_t) floor (timecode_frames_left_exact);
 
+	DEBUG_TRACE (DEBUG::Transport, string_compose ("TC EXACT: %1 -> FL %2\n", timecode_frames_left_exact, timecode_frames_left));
+
 	if (timecode_drop_frames()) {
 		// See int32_t explanation in timecode_to_sample()...
 
