"By then" does NOT mean "at a specific time." That is a common miscommunication of nonnative speakers, and can lead to big attitude problems.
"By then" means the same as "before then."
Here's a real example of how this causes issues:
An American calls a technical support hotline at 9:00AM and reaches a non-native English speaker. During the call, the call center agent realizes that he will not be able to immediately help the caller, so he decides to offer to do some research and call the customer (American) back at a later time. He expects that he will receive the answer he needs at 3:00PM, so he says to the American customer, "I will call you back with the information by 3:00PM."
The American, focused on being available for the callback, WILL NOT LEAVE HIS DESK FOR ANY REASON until he receives the call, expecting it to occur ANYTIME between now and 3:00PM.
Of course, the call center agent did not mean that - he feels free to go on break, go out to lunch, go to the restroom, whatever he needs to do. And, even if he receives the information prior to 3:00PM, he will not call the customer until 3:00PM.
Finally, at 3:00PM, the call center agent phones the American customer at precisely 3:00PM, thinking he is doing exactly what is expected of him. The American, having not gone to the restroom or even eaten lunch, is upset. "Did you have to wait until the last second to call back?"
If the Call Center Agent had instead said, "I'll call you back AT 3:00PM," the American customer would have felt free to do anything HE could do to make his day productive, so long as he returns to his desk before 3:00PM.
That little tiny mistake -- using "by" instead of "at" -- can cost the company a customer!