It's not that mysterious if you read the definition for the
trunc function and what it returns. I took things by step to see where the
Range Check Error is coming from. And when I changed the definition of x to
int64, it worked! Here's what I did to find the error.
program abc;
uses math;
var
x : int64;
lv : float;
pv : float;
tv : float;
begin
lv := 2 / log10( 2 );
pv := power( 10, lv );
tv := trunc( pv );
writeln( lv:12:6,' ', pv:12:6, ' ', tv:12:6 );
x := trunc(power(10, 2/log10(2)));
writeln( x:12 );
readln
end.