current should have initial value of zero