$sa_a[$mrow[$i][client_id]][] = $sa_a_cal; } // ready to graph foreach ($sa_a as $key => $value) { foreach ($value as $ki => $vi) { foreach ($vi as $kj => $vj) { $dat[$an_a_cat[$ql_a[$kj]]][$ki][$kj][] = $sa_a[$key][$ki][$kj]; //this is a nice subproduct $cal_graph[$an_a_cat[$ql_a[$kj]]][$ki] += $sa_a[$key][$ki][$kj]; $max_graph[$an_a_cat[$ql_a[$kj]]][$ki] += $an_a_cmax[$ql_a[$kj]]; // if ($an_a_cat[$ql_a[$kj]]) { $graph[$_LABELS[sprintf('tblSurveyItems.category.%s',$an_a_cat[$ql_a[$kj]])]][$ki] = 100*($cal_graph[$an_a_cat[$ql_a[$kj]]][$ki]/$max_graph[$an_a_cat[$ql_a[$kj]]][$ki]); } // change line above for line below... change $ki into $ki+1... this way first loan cycle displays 1 instead of 0... if ($an_a_cat[$ql_a[$kj]]) { $c[$ki]++; $graph[$_LABELS[sprintf('tblSurveyItems.category.%s', $an_a_cat[$ql_a[$kj]])]][$ki] = 100 * ($cal_graph[$an_a_cat[$ql_a[$kj]]][$ki] / $max_graph[$an_a_cat[$ql_a[$kj]]][$ki]); } // printf('[%s][%s] -> %s/%s<br>',$an_a_cat[$ql_a[$kj]],$ki,100*($cal_graph[$an_a_cat[$ql_a[$kj]]][$ki]),$max_graph[$an_a_cat[$ql_a[$kj]]][$ki]); } } } // get rid off last cycles with less than 5% answers than the first cycle foreach ($graph as $cat => $val) { foreach ($val as $cycle => $score) { if ($c[$cycle] / $c[0] > 0.05) { $fgraph[$cat][$cycle + 1] = $score; } } } $grafico = new Graph('', 'Loan cycle', '%', $fgraph); Graph::printBends($grafico);