Code:
ON @*:TEXT:*:#theoutboards: {
  if ($nick !isop $chan) { 
    inc $($+(-zu,%flood.unset)) $+(%,flood.,$chan,.,text.,$nick) %flood.unset
    if ($($+(%,flood.,$chan,.,text.,$nick),2) > $calc(%flood.lines * %flood.unset)) { 
      ban $($+(-ku,%flood.bantime)) $chan $nick 3 Don't flood 
    } 
  } 
} 
ON @*:ACTION:*:#theoutboards: { 
  if ($nick !isop $chan) { 
    inc $($+(-zu,%flood.unset)) $+(%,flood.,$chan,.,action.,$nick) %flood.unset
    if ($($+(%,flood.,$chan,.,action.,$nick),2) > $calc(%flood.lines * %flood.unset)) { 
      ban $($+(-ku,%flood.bantime)) $chan $nick 3 Don't flood 
    } 
  } 
}

* i corrected the >= to being a > as it ment to be more than X number of lines, not X or more.

This is what i came up with

Each time someone says soemthing it adds the number of seconds allowed (10 in your case) to there total, thats how long the lines valid for, its also how long the total well reflect anypart of that line, as the total decreases by 1 per second. (hope that makes sence).

If there over (number of lines allowed x total seconds allowed) (7 x 10 in your case) there baned.

If they dont say anything in number of seconds allowed (7 in your case) there total is reset to zero, so that fixes the accumulating problem.

Ex. say someone says 6 lines all at once there total would be 60, 5 seconds later its 55, they then say 1 line its up to 67, still under 70, if they say anything in the next 7 seconds, as there total drops from 67 to 60 then 10 would be added and there over 70, and get banned.

*** Im sure I have missed something in the logic here but its monday and it eludes me , as do most things on a monday **