private void advance() throws IOException {
				next = null;
				while((next==null)&&(null!=rdr)) {
					final String line = rdr.readLine();
					if(null==line) {
						rdr.close();
						rdr = null;
					} else {
						if(line.trim().length()>0) {
							final Map<String,Object> map = new LinkedHashMap<String,Object>();
							final int lineLen = line.length();
							boolean gotOne = false;
							for(final FixedFieldDef fi: fields) {
								// numbering from zero
								if((fi.l<lineLen)&&(fi.r>fi.l)) {
									final String val = line.substring(fi.l,Math.min(fi.r,lineLen)).trim();
									gotOne |= val.length()>0;
									map.put(fi.name,val);
								} else {
									map.put(fi.name,null);
								}
							}
							if(gotOne) {
								next = new BurstMap(line,map);
							}
						}
					}
				}
			}