I have a great Report procedure, where I report time running, xp made and xp/hour.
But some times it gets stupid and start giving wrong xp/h calcs.
For example.

I mark the time StartTime at start.
Simba Code:
procedure ReportOnSmart;
var
text1, text2, text3 : String;
boxBMP, TimeRun : Integer;
XP, XPHour : Extended;
begin
TimeRun:=TimeFromMark(StartTime);
XP := (GetXPBarTotal-StartXP)*3/4;
XPHour := XP * (3600000/TimeRun);
text1 := 'Time running: '+MsToTime(TimeRun,Time_Formal);
text2 := 'XP/H: '+FloatToStr(XPHour);
text3 := 'XP: '+FloatToStr(XP);
boxBMP := BitmapFromString(308, 64, 'meJztwjENAAAMAyD/biqqfy1Mw34I6aKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqur/AVZcclA=');
SMART_DrawBitmap(true, boxBMP,Point(4,274));
SMART_DrawTextEx(false,10,275,SmallChars,text1,clBlue);
SMART_DrawTextEx(false,10,295,SmallChars,text2,clBlue);
SMART_DrawTextEx(false,10,315,SmallChars,text3,clBlue);
FreeBitmap(boxBMp);
//Writeln('['+MsToTime(TimeFromMark(starttime),Time_Bare)+'] XP: '+IntToStr(XP)+' XP/H: '+IntToStr(XPHour));
Disguise('['+Players[CurrentPlayer].Nick+'] XP/H: '+FloatToStr(XPHour));
end;
EDIT: Ok problem is not with types, so title is bad for this. HELP pls!