Witam

Mam mały problem z którym nie mogę sobie poradzić bardzo proszę o pomoc.
ma taki kod:
void __fastcall TForm2::Button1Click(TObject *Sender)
{

PaintBox1->Canvas->Brush->Color =static_cast<TColor>(RGB(200, 200, 200));
PaintBox1->Canvas->FillRect(Rect(0, 0, 425, 400));
PaintBox1->Canvas->Pen->Color =clBlack;

PaintBox1->Canvas->MoveTo(0,200);//poziom
PaintBox1->Canvas->LineTo(420,200);
PaintBox1->Canvas->LineTo(410,205);
PaintBox1->Canvas->LineTo(410,195);
PaintBox1->Canvas->LineTo(420,200);
*PaintBox1->Canvas->MoveTo(0,0); *pion
//PaintBox1->Canvas->LineTo(0,400);

double a,b;
a=Edit_a->Text.ToDouble();
b=Edit_b->Text.ToDouble();

AnsiString zm = Edit1->Text;

            PaintBox1->Canvas->Pen->Color =clBlack;
            PaintBox1->Canvas->Font->Name = "Tahoma";
            PaintBox1->Canvas->Font->Color = clRed;
            PaintBox1->Canvas->Font->Size = 10;
            PaintBox1->Canvas->TextOut(0, 210, a);
            PaintBox1->Canvas->TextOut(400, 210, b);
            PaintBox1->Canvas->Font->Color = clBlack;
            PaintBox1->Canvas->MoveTo(0,195);
            PaintBox1->Canvas->LineTo(0,205);
            PaintBox1->Canvas->MoveTo(400,195);
            PaintBox1->Canvas->LineTo(400,205);

double p = fabs(a-b)/400;
double q = 400/fabs(a-b);
double c=a;

PaintBox1->Canvas->MoveTo(0,200-funk(c, zm)*q);
PaintBox1->Canvas->Pen->Width=2;

for(int i=0; i<=fabs(a-b)*q; i++)
{
PaintBox1->Canvas->LineTo(i,200-funk(c,zm)*q);
c=c+p;
}
PaintBox1->Canvas->Pen->Width=1;

polega to na tym że program po kliknięci guzika ma narysować wykres funkcji wprowadzonej przez użytkownika w polu Edit1 i w przedziale wprowadzonym przez użytkownika w polu Edit_a i Edit_b. funkcja rysuje poprawnie jeśli podany przedział nie jest duży lecz gdy na przykład wpisze przedział od -5000 do 5000 to na rysunku po prawej i po lewej stronie robię się jakieś takie kreski i nie wiem dlaczego :-(

Bardzo proszę o pomoc w tej sprawie