 	// Discover the dimensions of the FIR coefficients.  This uses the 
 	// first dimension to set the number of coefficients.  All following
 	// dimensions are merged together to get the the number of ant/pols.
-	int ncoeff, nantpols;
+	unsigned int ncoeff, nantpols;
 	ncoeff = coeffs->shape[0];
 	nantpols = 1;
 	for(int i=1; i<coeffs->ndim; ++i) {

}

class BFfir_impl {
	typedef int    IType;
	typedef double FType;
public: // HACK WAR for what looks like a bug in the CUDA 7.0 compiler
	typedef float  DType;
private:
	IType        _ncoeff;
	IType        _decim;
	IType        _nantpol;
	double*      _coeffs = NULL;
	Complex64*   _state0 = NULL;
	Complex64*   _state1 = NULL;

                              OutType*     d_out,
                              cudaStream_t stream=0) {
	//cout << "LAUNCH for " << nelement << endl;
	dim3 block(std::min(256u, nantpol), 256u/std::min(256u, nantpol));
	int first = std::min((nantpol-1)/block.x+1, 65535u);
	int secnd = std::min((ntime/decim-1)/block.y+1, 65535u);
	int third = std::min((ntime/decim-secnd*block.y-1)/secnd+2, 65535u);
