USE newdnc thisform.text9.value = time()&& i a ctivate it at the begining run thisform.text13.value = time() && after seconds i activate it via command bottom1. thisform.text14.value = thisform.TIM(thisform.text13.value, thisform.text9.value) replace time1 with thisform.text9.value,; time2 with thisform.text13.value,; time3 with thisform.text14.value ***** Method TIM of the form LPARAMETERS nSecs, nSec2 LOCAL c_hours, c_min, c_znak, nLocSec IF .NOT. TYPE("nSecs") $"CT" .OR.; .NOT. TYPE("nSec2") $"CT" .OR.; TYPE("nSecs") # TYPE("nSec2") RETURN "" ENDIF IF TYPE("nSecs") == "C" && Time string nLocSecs = VAL(LEFT(nSec2,2))*3600 nLocSecs = nLocSecs + VAL(SUBSTR(nSec2,4,2))*60+ VAL(SUBSTR(nSec2,7,2)) nLocSecs = nLocSecs - (VAL(LEFT(nSecs,2))*3600 ++ VAL(SUBSTR(nSecs,4,2))*60+ VAL(SUBSTR(nSecs,7,2))) ELSE *** Suppose here You passed DateTime parameters nLocSecs = nSec2 - nSecs ENDIF c_znak = IIF(nLocSecs < 0, "-","") nSecs = ABS(nLocSecs) c_hours = INT(nSecs/3600) nSecs = nSecs - (c_hours*3600) c_hours = IIF(c_hours<10,"0","")+ALLTRIM(STR(c_hours,15)) c_min = INT(nSecs/60) nSecs = nSecs - (c_min*60) c_min = IIF(c_min<10,"0","") + ALLTRIM(STR(c_min,15)) nSecs = IIF(nSecs<10,"0","") + ALLTRIM(STR(nSecs,10)) RETURN c_znak+c_hours+":"+c_min+":"+nSecsFunction TIME() returns string so if You have to save this TIME All fields must be Character type, this function also returns a string