LB's inbuilt turtle commands are great, but store turtle location and heading only as integers. As a result errors accumulate if you have a whole chain of calculated moves.
By writing code to store turtle position and heading as floats, thse errors disappear.
nomainwin WindowWidth =800: WindowHeight =700 graphicbox #w.gb, 0,0,800,700 open "Demo Koch Snowflake" for window as #w hw =hwnd( #w.gb) calldll #user32, "GetDC", hw as ulong, hdc as ulong #w "trapclose quit" global x, y, tx, ty, otx, oty, ta, targetcolor tx =0: ty =0: ta =0 ' turtle ( x, y) and heading in degrees otx =0: oty =0 targetcolor =1 for i =1 to 15 if targetcolor =0 then targetcolor =1 else targetcolor =0 ta =0 x = 0 + 40 *i y = 20 + 10 *i otx =x: oty =y #w.gb "up ; goto "; tx; " "; ty; " ; down ; size 2" #w.gb "color "; targetcolor; " 0 0" l = 40 +6 *i d = 2 for side =1 to 3 call f l, d ta =ta +120 '#w.gb "turn 120" next side r =l /150 *255' int( 50 +200 *rnd( 1)) #w.gb "backcolor "; r; " "; r; " 60" #w.gb "color red" xS =x +7: yS =y +3 #w.gb "down ; size 1 ; set "; x +7; " "; y +3; " ; up ; size 2" 'goto [skip] calldll #gdi32, "ExtFloodFill",_ hdc as ulong,_ ' handle of graphic window xS as long,_ ' x-origin of fill yS as long,_ ' y-origin of fill targetcolor as long,_ ' boundary colour _FLOODFILLBORDER as long,_ ' ie fill out 'til the above colour is met... result as long [skip] next i #w.gb "getbmp scr 1 1 800 700" bmpsave "scr", "KochTurtle" +str$( time$( "seconds")) +".bmp" wait sub quit h$ close #h$ calldll #user32, "ReleaseDC", hw as ulong, hdc as ulong 'release the DC end end sub sub f length, depth scan if depth <= 0 then tx =otx +length *cosR( ta) ty =oty +length *sinR( ta) '#w.gb "go "; int( length) #w.gb "down ; line "; otx; " "; oty; " "; tx; " "; ty; " ; up" else call f length /3, depth -1: ta =ta -60' #w.gb "turn -60" call f length /3, depth -1: ta =ta +120' #w.gb "turn 120" call f length /3, depth -1: ta =ta -60' #w.gb "turn -60" call f length /3, depth -1 end if otx =tx: oty =ty end sub function cosR( th) cosR =cos( th *2 *3.14159265 /360) end function function sinR( th) sinR =sin( th *2 *3.14159265 /360) end function