Does beat sync guess the number of lines in loops properly?

I often find Renoise guesses double the speed of samples I load when I enable Beat Sync.

It often reports 8 when 16 would be more appropriate, or 32 when 64 would be a better fit.

This little bit of lua seems to do a better job to me:

-- round value to nearest integer
function round(x)
	return math.floor(0.5 + x)
end

-- samples length in seconds
function sample_length(sample)
	local frames = sample.sample_buffer.number_of_frames
	local rate = sample.sample_buffer.sample_rate
	return frames / rate
end

-- Guesses the number of lines in a loop at the given bpm
function guess_length_in_lines(sample)
	local rns = renoise.song()

	local length = sample_length(sample)

	-- calculate song's beats per second
    local bps = rns.transport.bpm / 60

	-- calculate samples length in beats at current bpm
	local beats_at_bpm = length * bps

	-- closest power of two finds us 1, 2, 4, 8, 16, 32 beats etc.
	local beats_in_loop = 2 ^ round(math.log(beats_at_bpm) / math.log(2))

	-- return a nice round number of lines
	return beats_in_loop * rns.transport.lpb
end

I know this kind of guessing can be a little arbitrary but is Renoise finding a floor when it could be rounding?