diff -aur shntool-3.0.10-clean/src/core_mode.c shntool-3.0.10/src/core_mode.c --- shntool-3.0.10-clean/src/core_mode.c 2009-03-30 06:55:33.000000000 +0100 +++ shntool-3.0.10/src/core_mode.c 2012-08-11 16:37:58.000000000 +0100 @@ -310,8 +310,8 @@ if (sec >= 60) st_error("invalid value for seconds: [%d]",sec); - bytes = (wlong)(min * info->rate * 60) + - (wlong)(sec * info->rate); + bytes = (((wlong)min) * info->rate * 60) + + (((wlong)sec) * info->rate); return bytes; } @@ -358,9 +358,9 @@ if (frames >= 75) st_error("invalid value for frames: [%d]",frames); - bytes = (wlong)(min * CD_RATE * 60) + - (wlong)(sec * CD_RATE) + - (wlong)(frames * CD_BLOCK_SIZE); + bytes = (((wlong)min) * CD_RATE * 60) + + (((wlong)sec) * CD_RATE) + + (((wlong)frames) * CD_BLOCK_SIZE); return bytes; } @@ -403,8 +403,8 @@ nearest_byte = (int)((((double)ms * (double)info->rate) / 1000.0) + 0.5); - bytes = (wlong)(min * info->rate * 60) + - (wlong)(sec * info->rate); + bytes = (((wlong)min) * info->rate * 60) + + (((wlong)sec) * info->rate); if (PROB_NOT_CD(info)) { bytes += nearest_byte;