All the sentences are correct. In the context your examples indicate — “bargain on” and “bargain for” can usually be used interchangeably, but “bargain for” is more common and sounds most natural to me. They both mean “to expect,” but they usually used in the negative: “I didn’t bargain for/on X” — meaning, I didn’t expect X. “Bargain on” can also used in this context, meaning to buy something at a good price: “I got a bargain on that car. I paid $5000 less than the usual price.”