WS2803 and FastSPI_LED2

I’m experiencing the following problem:

I’m using the Arduino UNO with the WS2803 set as WS2801 in FastSPI. I have written code which allows me to select colors and timing individually for each of 6 LEDs. Currently I simply have them all blinking the same colors at the same time (ie GREEN BLACK RED BLACK) as fast as they can (times are set to 0).

The problem is that if I wave the LEDs around I don’t get quick strobing dots, but little lines (the LEDs are staying on too long). With only one LED running I don’t have this problem. What’s weirder is that when I set the timing for the gaps (BLACK) to about 10 milliseconds or more I get nice little dots, not lines. Any ideas what might be causing this?

#include "FastSPI_LED2.h"
// Uncomment this line if you have any interrupts that are changing pins - this causes the library to be a little bit more cautious
// #define FAST_SPI_INTERRUPTS_WRITE_PINS 1


#define NUM_LEDS 6
//Data is pin 5 on WS2803
#define DATA_PIN 5
//CLK is pin 4 on WS2803
#define CLOCK_PIN 4

#define RED 0x050000
#define GREEN 0x000500
#define BLUE 0x000005
#define WHITE 0xFFFFFF
#define BLACK 0x000000

// This is an array of leds.  One item for each led in your strip.
CRGB leds[NUM_LEDS];


unsigned long  setC[4]={RED, BLACK, GREEN, BLACK}; //set colors
unsigned long  setT[4]={0, 10, 0, 10}; //set time for each color
byte setLengths[]={4,4,4,4,4,4}; //number of colors for each LED
byte nextColor[]={0,0,0,0,0,0}; //used for timing and setting next color

unsigned long m=millis();
unsigned long previousM[6]={m,m,m,m,m,m}; //previous time
unsigned long currentM[6]={m,m,m,m,m,m}; //current time


void setup() {
       FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
}

void loop() {

  for(int i=0; i<6; i++){
    if(millis()-previousM[i]>setT[nextColor[i]]){
      if(nextColor[i]+1<setLengths[i]){
        nextColor[i]++;
        leds[i]=setC[nextColor[i]];
        FastLED.show();
        delay(1);
        previousM[i]=millis();
      }
      else {
        nextColor[i]=0;
        leds[i]=setC[nextColor[i]];
        FastLED.show();
        delay(1);
        previousM[i]=millis();
      }
    }
  }
}