anchor.diff:      	    triangle_ls_lp(LSs1, SLSs, Out)
       end;
   triangle_ls_lp([], P1, LSs2, P2, Out) ->
  -    SLSs = tri_ls_ysort(line_ls(P1,P2)),
  +    SLSs = tri_ls_ysort(line_to_linespans(P1,P2,1)),
       N1 = length(SLSs),
       N2 = length(LSs2),
       if 
  
positive.code: line_to_ls_sy_do(X0,Y0,X1,Y1,Dx,Dy,Sx,Sy,E,Ed,Wd,Ls0,E2,X) when E2 < Ed*Wd andalso
                                                                  (X1 =/= X orelse Dx < Dy) ->
      X2 = X + Sx,
      %C = max(0,255*(abs(E2)/Ed-Wd+1)),
      %Ls = [{sy,Y0,X2,C}|Ls0],
      Ls = [{Y0,X2,X2}|Ls0],
      line_to_ls_sy_do(X0,Y0,X1,Y1,Dx,Dy,Sx,Sy,E,Ed,Wd,Ls,E2+Dy,X2);
  line_to_ls_sy_do(_X0,Y0,_X1,Y1,_Dx,_Dy,_Sx,_Sy,_E,_Ed,_Wd,Ls,_E2,_X) when Y0 =:= Y1 ->
      Ls;
  line_to_ls_sy_do(X0,Y0,X1,Y1,Dx,Dy,Sx,Sy,E,Ed,Wd,Ls,_E2,_X) ->
      line_to_ls(X0,Y0+Sy,X1,Y1,Dx,Dy,Sx,Sy,E+Dx,Ed,Wd,Ls).
  
  % Text
  
  
negative.code:     % At an end point, a new line to the point already being drawn
      % repeat same procedure as above
      [Sp1, Sp2, Sp3] = tri_pt_ysort([P1,P2,P3]),   
      triangle_ls_lp(tri_ls_ysort(line_to_linespans(Sp1,Sp2,1)), Sp2,
                     tri_ls_ysort(line_to_linespans(Sp1,Sp3,1)), Sp3, []).
  
  % There will be Y mismatches between the two lists since bresenham is not perfect.
  % I can be remedied with checking intervals this could however be costly and
  