При работе с 64 битной переменной некорректно устанавливаются биты (не устанавливается значение младшего байта).
Out1.Value:=0;
Out1.Value:=SetBit(Out1.Value,60,True);
Out1.Value:=SetBit(Out1.Value,57,True);
Out1.Value:=SetBit(Out1.Value,53,True);
Out1.Value:=SetBit(Out1.Value,52,True);
Out1.Value:=SetBit(Out1.Value,50,True);
Out1.Value:=SetBit(Out1.Value,46,True);
Out1.Value:=SetBit(Out1.Value,44,True);
Out1.Value:=SetBit(Out1.Value,42,True);
Out1.Value:=SetBit(Out1.Value,41,True);
Out1.Value:=SetBit(Out1.Value,38,True);
Out1.Value:=SetBit(Out1.Value,37,True);
Out1.Value:=SetBit(Out1.Value,36,True);
Out1.Value:=SetBit(Out1.Value,35,True);
Out1.Value:=SetBit(Out1.Value,31,True);
Out1.Value:=SetBit(Out1.Value,28,True);
Out1.Value:=SetBit(Out1.Value,27,True);
Out1.Value:=SetBit(Out1.Value,25,True);
Out1.Value:=SetBit(Out1.Value,23,True);
Out1.Value:=SetBit(Out1.Value,21,True);
Out1.Value:=SetBit(Out1.Value,20,True);
Out1.Value:=SetBit(Out1.Value,19,True);
Out1.Value:=SetBit(Out1.Value,18,True);
Out1.Value:=SetBit(Out1.Value,15,True);
Out1.Value:=SetBit(Out1.Value,14,True);
Out1.Value:=SetBit(Out1.Value,12,True);
Out1.Value:=SetBit(Out1.Value,11,True);
Out1.Value:=SetBit(Out1.Value,10,True);
Out1.Value:=SetBit(Out1.Value,9,True);
Out1.Value:=SetBit(Out1.Value,7,True);
Out1.Value:=SetBit(Out1.Value,6,True);
Out1.Value:=SetBit(Out1.Value,5,True);
Out1.Value:=SetBit(Out1.Value,4,True);
Out1.Value:=SetBit(Out1.Value,0,True);
Если добавить вывод сообщения, то видно, что число, действительно 1311768467463790080 вместо 1311768467463790321.
При записи в переменную целого числа вместо установки битов ситуация не меняется. Младший байт "съеден".