Nope, it's not a rounding problem and it's not an issue.
The "buy price" given by the program is the maximum price you should buy BTC at.
The "sell price" given by the program is the minimum price you should sell BTC at.
Example with this order book:
books = {
'MtGoxEUR':
{'asks': [{'amount': 1, 'price': 47.0},
{'amount': 2, 'price': 47.3},
{'amount': 1, 'price': 48.0},
{'amount': 3, 'price': 49.0}]},
'BitcoinCentralEUR':
{'bids': [{'amount': 1, 'price': 48.2},
{'amount': 2, 'price': 48.1},
{'amount': 1, 'price': 48.0},
{'amount': 5, 'price': 47.9}]}}
Output will be :
volume: 3.0 BTC buy at 48.0 (MtGoxEUR) sell at 48.0 (BitcoinCentralEUR)
Note: volume is 3.0 btc, not 4.0 btc (that includes 48.0 price)