log contents: 01:39.560: return part 1: 374 01:39.560: return part 2: 249 01:39.560: return in full: -1828379652 01:39.560: marv pct = -1610612736 and marv count = 1073219641 01:39.560: return part 1: 96 01:39.560: return part 2: 249 01:39.560: return in full: 258732970 01:39.560: perf pct = 0 and perf count = 1071164601 01:39.560: return part 1: 28 01:39.560: return part 2: 249 01:39.560: return in full: -1845628517 01:39.560: great pct = -1610612736 and great count = 1069336962 01:39.560: return part 1: 0 01:39.560: return part 2: 249 01:39.560: return in full: 0 01:39.560: good pct = 0 and good count = 0 01:39.560: return part 1: 0 01:39.560: return part 2: 249 01:39.560: return in full: 0 01:39.560: boo pct = 0 and boo count = 0 01:39.560: return part 1: 0 01:39.560: return part 2: 249 01:39.560: return in full: 0 01:39.561: miss pct = 0 and miss count = 0 Then the code: float StageStats::GetTapPercentages( PlayerNumber pn, TapNoteScore tns ) const { int iTotalTaps = 0; for( int i=TNS_MISS; iTrace( "return part 1: %i", ( PREFSMAN->m_iGradeWeightMarvelous * iTapNoteScores[pn][tns] ) ); LOG->Trace( "return part 2: %i", iTotalTaps ); int iTaps = ( PREFSMAN->m_iGradeWeightMarvelous * iTapNoteScores[pn][tns] ); float fTapPercentage = (float)iTaps / (float)iTotalTaps; LOG->Trace( "return in full: %i", fTapPercentage ); return fTapPercentage; }