several bugs and/or unexpected behavior cases (pandas v. 0.12.0)
```
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
from pandas.tseries import offsets
```

```
# bug 1: the dtype of "id" changes from int to float, why?
df1 = DataFrame([[1, 10.0], 
                 [2, 20.0]],
                columns=['id', 'value'])
df2 = DataFrame([[2, -20.0], 
                 [3, -30.0]],
                columns=['id', 'value'])
df = pd.merge(df1, df2, on='id', how='outer', suffixes=['_a', '_b'])
print df1.dtypes
print df2.dtypes
print df.dtypes
# watch dtype of column "id"
print
```

```
# bug 2: MultiIndex is int32 instead of being int64
df1 = DataFrame([0,1], index=[2*[2L**32-1], ['1','2']], columns=['value']) 
print df1.unstack(level=0) # OK
df2 = DataFrame([0,1], index=[2*[2L**32],   ['1','2']], columns=['value']) 
print df2.unstack(level=0) # FAILS
df3 = DataFrame([0,1], index=[2*[str(2L**32)], ['1','2']], columns=['value']) 
print df3.unstack(level=0) # OK
```

```
# bug 3: inconsistent result for application of pd.tseries.offsets.MonthEnd()
t1_start = pd.Timestamp('02/01/2000') 
t1_end = pd.Timestamp(t1_start+pd.tseries.offsets.MonthEnd())
# t1_end is the end of February 
t2_start = pd.date_range('2000-02-01', '2000-03-01', freq='6M')
t2_end = t2_start+pd.tseries.offsets.MonthEnd()
# t2_end is the end of March, why?
print
```

```
# bug 4: unexpected behaviour for "group by"
data = DataFrame(\
    {'A': [1,1,1,1,1, 2,2,2, 3 ], 
     'B': ['a',np.NaN,'b',np.NaN,'c', np.NaN,np.NaN,np.NaN, 'd'], 
     'C': [np.NaN,np.NaN,10,np.NaN,np.NaN, np.NaN,np.NaN,np.NaN, 30],
     'D': [-1,np.NaN,np.NaN,np.NaN,-1, np.NaN,np.NaN,np.NaN, -3]})
data_1 =  data.copy()
data_2 =  data.copy()

grouped = data_1[['B','C']].groupby(data_1['A'])
data_1[['B','C']] = grouped.fillna(method='ffill')
data_1[['B','C']] = grouped.fillna(method='bfill')

grouped = data_2[['B','C']].groupby(data_2['A'])
data_2[['B','C']] = grouped.fillna(method='ffill')

grouped = data_2[['B','C']].groupby(data_2['A'])
data_2[['B','C']] = grouped.fillna(method='bfill')

# data_1 and data_2 differ, why? maybe I missunderstand something here?
```
