title: strange behavior with numpy roll and masked array
body: <p>I have the following code (i.e. it's just a dummy code to demonstrate my problem)</p>
  
  <pre><code>#!/usr/bin/python
  import numpy as np
  
  #define array, -999 being a missing value
  a=np.array([5.,-999.,7.,8.])
  print "array:"
  print a
  print
  
  a=np.ma.masked_values(a,-999.)
  print "masked array:"
  print a
  print
  
  #define new missing value
  bad=1e30
  a.set_fill_value(bad)
  
  #roll array
  a=np.roll(a,1,axis=0)
  
  #plug-in new missing value 
  a=a.filled()
  
  print "array after rolling with new missing value (1e30):"
  print a
  </code></pre>
  
  <p>On my 32 bit machine with numpy 1.4.1, I get the expected output:</p>
  
  <pre><code>array:
  [   5. -999.    7.    8.]
  
  masked array:
  [5.0 -- 7.0 8.0]
  
  array after rolling with new missing value (1e30):
  [  8.00000000e+00   5.00000000e+00   1.00000000e+30   7.00000000e+00]
  </code></pre>
  
  <p>On my 64 bit machine with numpy 1.6.1 I get </p>
  
  <pre><code>[   5. -999.    7.    8.]
  
  masked array:
  [5.0 -- 7.0 8.0]
  
  array after rolling with new missing value (1e30):
  [  8.00000000e+00   5.00000000e+00   1.00000000e+20   7.00000000e+00]
  </code></pre>
  
  <p>So, my fill value for the masked array of 1e30 changed to 1e20 after rolling the array. I'm I doing something wrong, or is this a known bug?</p>
  
  <p>Raphael</p>