Not sure how a Source works, but are you skipping the last value by returning here and not calling setTuple() like you are on line 53?
Or does hasNext == false actually mean that you are done already?