In chapter-5, B13346_05_18-split.py,
the lines -
area = abs(shapefile.signed_area(utmPoints))
if area <= 100:
w.poly([sr.shape.points])
w.record(*list(sr.record))
should come inside the inner for loop. if not, the splitted shapefile will have only one record.