Encontrou o mesmo mau comportamento no ElCapitan (MacOSX 10.11 ..). Na investigação, viu que os dados de registro de data e hora no arquivo / var / account / acct estavam corretos. Compilando a fonte do lastcomm.c no link
mostrou a mensagem do compilador "aviso: tipos de ponteiro incompatíveis passando 'u_int32_t *' (também conhecido como 'não assinado int *') para o parâmetro do tipo 'const time_t *' (também conhecido como 'const long *')"
O patch a seguir para corrigir o registro de data e hora da má contabilização funcionou para mim no ElCapitan. Pode funcionar para Yosemite (10.10 ..) e antes.
*** lastcomm.c 2016/08/26 19:44:23 1.1
--- lastcomm.c 2016/08/27 00:30:49 1.2
***************
*** 135,138 ****
--- 135,140 ----
if (!*argv || requested(argv, &ab)) {
+ time_t timelong;
+ timelong = ab.ac_btime;
t = expand(ab.ac_utime) + expand(ab.ac_stime);
(void)printf(
***************
*** 144,148 ****
user_from_uid(ab.ac_uid, 0), UT_LINESIZE,
UT_LINESIZE, getdev(ab.ac_tty),
! t / (double)AHZ, ctime(&ab.ac_btime));
delta = expand(ab.ac_etime) / (double)AHZ;
printf(" (%1.0f:%02.0f:%05.2f)\n",
--- 146,150 ----
user_from_uid(ab.ac_uid, 0), UT_LINESIZE,
UT_LINESIZE, getdev(ab.ac_tty),
! t / (double)AHZ, ctime(&timelong));
delta = expand(ab.ac_etime) / (double)AHZ;
printf(" (%1.0f:%02.0f:%05.2f)\n",