Я думаю, что это связано с усилиями ТЗ
нарисовать прямоугольник размером не менее 1 пикселя.
В коде я вижу, что y2 увеличивается на
1, если оно равно y1 после округления до короткого целого числа.
Регистрируя ваши операторы создания можно увидеть, что пиксель прыгает
происходит между f = 10 и f = 11. Это та точка, где
y1 и y2 становятся неравными, и никакой регулировки не происходит:
f=10 .c create rectangle 40 104.5 42 105 -fill black
rounded: y1=105 y2=105
adjusted: y1=105 y2=106
f=11 .c create rectangle 42 104.45 44 105 -fill black
rounded: y1=104 y2=105
no adjustment
Это объясняет скачок пикселей.
IMO, вы должны сообщить об ошибке на этом.