Ramadan is the 9th month of the Islamic year, it can be 29 or 30 days (as every other month in this lunar calendar). Usually this is determined by visual observation of the moon in the 29th of the month, if the moon was observed then the month is 29 days, if not then the month will continue to 30 days. FYI, this is why the crescent is considered the symbol for Islam.
So, there is no way to know in advance. Calculations are accurate most of the times but still it can go wrong especially if the weather is cloudy and the moon could not be observed while calculations suggest the month is 29 days, then the month will continue to 30 days regardless of the calculations. This is of course in most countries. Some countries do depend totally on calculations, while others do not.
One more thing worth mentioning, the same rules apply to the month before Ramadan (Sha'aban), which means any altering to that month will affect Ramadan, causing the two days difference than the calculated dates, as was suggested in your question. In many years, Islamic countries have three Eids (the first day after Ramadan, it is like Christmas for Muslims), one would end Ramadan two days earlier than the others, while some end it one day earlier, and the rest end it on 30 days! so there is a chance to attend three different Eids.
Bahrain, as most of the Sunni countries follow Saudi Arabia, Shia countries (or groups within countries) mostly follow Iran. Some countries like Indonesia can have two different dates! some will stop fasting on a date and the rest will add one more day.
The official Islamic Calendar in Saudi Arabia is called Ummulqura, which is also followed in Bahrain in this regard, if you want to have the best guess then this is it, and according to it, Ramadan will end on 16th of July, 2015.