Go to the previous, next section.

#### Another Bug @dots{} Most Insidious

I said `almost ready to print'! Of course, there is a bug in the ` print-graph ` function @dots{} It has a ` vertical-step ` option, but not a ` horizontal-step ` option. The ` top-of-range ` scale goes from 10 to 300 by tens. But the ` print-graph ` function will print only by ones.

This is a classic example of what some consider the most insidious type of bug, the bug of omission. This is not the kind of bug you can find by studying the code, for it is not in the code; it is an omitted feature. Your best actions are to try your program early and often; and try to arrange, as much as you can, to write code that is easy to understand and easy to change. Try to be aware, whenever you can, that whatever you have written, will be rewritten, if not soon, eventually. A hard maxim to follow.

It is the ` print-X-axis-numbered-line ` function that needs the work; and then the ` print-X-axis ` and the ` print-graph ` functions need to be adapted. Not much needs to be done; there is one nicety: the numbers ought to line up under the tic marks. This takes a little thought.

Here is the corrected ` print-X-axis-numbered-line `:

```(defun print-X-axis-numbered-line
&optional horizontal-step)
"Print line of X-axis numbers"
(let ((number X-axis-label-spacing)
(horizontal-step (or horizontal-step 1)))
(delete-char
(- (1-
(length (int-to-string horizontal-step)))))
(insert (concat
(make-string
;; Insert white space.
(-  (* symbol-width
X-axis-label-spacing)
(1-
(length
(int-to-string horizontal-step)))
2)
? )
(int-to-string
(* number horizontal-step))))
;; Insert remaining numbers.
(setq number (+ number X-axis-label-spacing))
(while (> number-of-X-tics 1)
(insert (X-axis-element
(* number horizontal-step)))
(setq number (+ number X-axis-label-spacing))
(setq number-of-X-tics (1- number-of-X-tics)))))
```

If you are reading this in Info, you can see the new versions of ` print-X-axis ` ` print-graph ` and evaluate them. If you are reading this in a printed book, you can see the changed lines here (the full text is too much to print).

```(defun print-X-axis (numbers-list horizontal-step)
@dots{}
(print-X-axis-numbered-line
```(defun print-graph
{"ft_lang_label":"__label__en","ft_lang_prob":0.8504641,"math_prob":0.9006015,"size":2429,"snap":"2020-45-2020-50","text_gpt3_token_len":584,"char_repetition_ratio":0.17030928,"word_repetition_ratio":0.028653296,"special_character_ratio":0.25113216,"punctuation_ratio":0.09832636,"nsfw_num_words":0,"has_unicode_error":false,"math_prob_llama3":0.9818803,"pos_list":[0],"im_url_duplicate_count":[null],"WARC_HEADER":"{\"WARC-Type\":\"response\",\"WARC-Date\":\"2020-11-29T10:52:59Z\",\"WARC-Record-ID\":\"<urn:uuid:37d29bd9-1198-4b4c-90b5-339f35c0062d>\",\"Content-Length\":\"3944\",\"Content-Type\":\"application/http; msgtype=response\",\"WARC-Warcinfo-ID\":\"<urn:uuid:88e84543-5748-4fe7-9fa5-dde039764fc1>\",\"WARC-Concurrent-To\":\"<urn:uuid:59fc8ab3-d04c-465d-921b-c5e9d07455ff>\",\"WARC-IP-Address\":\"157.181.226.151\",\"WARC-Target-URI\":\"https://web.cs.elte.hu/local/texinfo/elisp-intro/emacs-lisp-intro_240.html\",\"WARC-Payload-Digest\":\"sha1:IAWHMTJDJA2EWJ3HP3VIAC6VFQ4J3325\",\"WARC-Block-Digest\":\"sha1:6NTFMSZYTJ3DLZDRP3K4RQTVDQO6YYOR\",\"WARC-Identified-Payload-Type\":\"application/xml\",\"warc_filename\":\"/cc_download/warc_2020/CC-MAIN-2020-50/CC-MAIN-2020-50_segments_1606141197593.33_warc_CC-MAIN-20201129093434-20201129123434-00414.warc.gz\"}"}