Almost complete - have to take into account zeros