diff --git a/src/ChangeLog b/src/ChangeLog
index 9b095554dc3920e47c2a47b844c61542f6c53e0d..c8b213cba92d0652674688afbdfcc763ed50edd8 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,9 +1,23 @@
-Fri Nov 19 15:00:32 1999  David Byers  <davby@sen2.ida.liu.se>
+1999-11-19  David Byers  <davby@anton9.ida.liu.se>
 
-	* Release av 0.46-BETA-C
+	* utilities.el (lyskom-looking-at): New function (Gnu Emacs 20.3
+	bug workaround.)
+
+	* edit-text.el (kom-ispell-message): Use lyskom-looking-at.
+	(lyskom-edit-parse-headers): Same here.
+	(lyskom-edit-extract-aux-item-flags): Same here.
+	(lyskom-edit-extract-text): Same here.
+	(lyskom-edit-on-aux-item): Same here.
+
+	* lyskom-rest.el (lyskom-prot-a-format-string): string-as-unibyte
+	the string or concat may convert us to multibyte later.
+	(lyskom-prot-a-format-raw-string): Same here.
 
 1999-11-19  David Byers  <davby@ida.liu.se>
 
+	* compatibility.el (check-coding-system): Throw an error instead
+	of returning nil.
+	
 	* parse.el (lyskom-init-parse): Turn off multibyte chars in the
 	parse buffer.
 
diff --git a/src/compatibility.el b/src/compatibility.el
index 9fb58ab4f82d9e9231337e60f07bdc9d7b84f964..8cd7fac23545ef99f638ccbe69be8bc20393dc07 100644
--- a/src/compatibility.el
+++ b/src/compatibility.el
@@ -285,7 +285,7 @@ string to search in."
 (lyskom-provide-function encode-coding-string (str coding-system) str)
 (lyskom-provide-function decode-coding-string (str coding-system) str)
 (lyskom-provide-function string-bytes (str) (length str))
-(lyskom-provide-function check-coding-system (name) nil)
+(lyskom-provide-function check-coding-system (name) (error "No such coding system"))
 (lyskom-provide-function string-width (str) (length str))
 (lyskom-provide-function char-width (c) 1)
 (lyskom-provide-function find-charset-string (str) '(ascii))
diff --git a/src/edit-text.el b/src/edit-text.el
index 0e41f255da29ecfb5dfee16937e01f5babb442ec..665da98d22f7530057736a0b1cbfc7bda90fecfb 100644
--- a/src/edit-text.el
+++ b/src/edit-text.el
@@ -706,7 +706,7 @@ Based on ispell-message."
         (while (if internal-messagep
                    (< (point) internal-messagep)
                  (not (eobp)))
-          (if (looking-at subject-string)
+          (if (lyskom-looking-at subject-string)
               (progn (goto-char (match-end 0))
                      (let ((case-fold-search old-case-fold-search))
                        (ispell-region (point)
@@ -716,7 +716,7 @@ Based on ispell-message."
             (forward-line 1)))
 
         (while (< (point) limit)
-          (while (and (looking-at cite-regexp-start)
+          (while (and (lyskom-looking-at cite-regexp-start)
                       (< (point) limit)
                       (zerop (forward-line 1))))
 
@@ -1475,7 +1475,7 @@ to lyskom-edit-replace-headers"
   "Check if point is at the beginning of a header of type HEADER.
 Return the corresponding number (conf no etc.) if MATCH-NUMBER is
 non-nil. If MATCH-NUMBER is 'angled, only match a number inside <>."
-  (if (looking-at
+  (if (lyskom-looking-at
        (concat (lyskom-get-string header)
 	       (cond ((eq match-number 'angled)
 		      "[^0-9]*<\\([0-9]+\\)>")
@@ -1524,7 +1524,7 @@ easy to use the result in a call to `lyskom-create-misc-list'."
 	   ((lyskom-looking-at-header 'header-subject nil)
 	    (setq subject (lyskom-edit-extract-subject)))
 
-           ((looking-at (lyskom-get-string 'aux-item-prefix))
+           ((lyskom-looking-at (lyskom-get-string 'aux-item-prefix))
             (goto-char (match-end 0))
             (let ((item (lyskom-edit-parse-aux-item)))
               (if item
@@ -1550,7 +1550,7 @@ easy to use the result in a call to `lyskom-create-misc-list'."
                               data))))
 
 (defun lyskom-edit-extract-aux-item-flags ()
-  (if (looking-at ".*\\[\\([^]]*\\)\\]\\s-*$")
+  (if (lyskom-looking-at ".*\\[\\([^]]*\\)\\]\\s-*$")
     (let ((flag-strings (match-string 1))
           (start 0)
           (flag nil)
@@ -1591,7 +1591,7 @@ Point must be located on the line where the subject is."
       (buffer-substring (1+ (point))
 			(progn
 			  (goto-char (1- (point-max)))
-			  (while (looking-at "\\s-")	; remove trailing
+			  (while (lyskom-looking-at "\\s-")	; remove trailing
 			    (backward-char 1))		; whitespace
 			  (forward-char 1)
 			  (point))))))
@@ -1601,7 +1601,7 @@ Point must be located on the line where the subject is."
   "Return non-nil if point is on the same line as an aux-item"
   (save-excursion
     (beginning-of-line)
-    (and (looking-at (lyskom-get-string 'aux-item-prefix))
+    (and (lyskom-looking-at (lyskom-get-string 'aux-item-prefix))
          (search-forward 
           (substitute-command-keys
            (lyskom-get-string 'header-separator)) 
diff --git a/src/lyskom-rest.el b/src/lyskom-rest.el
index c16684027ceade5e6dafaecf74956cc77263ea52..b24f0dde1fe52763ead277503ff97dd2d1fc193d 100644
--- a/src/lyskom-rest.el
+++ b/src/lyskom-rest.el
@@ -103,7 +103,7 @@
      "Internal LysKOM error")
 
 (put 'lyskom-format-error 'error-conditions
-     '(error lyskom-error lyskom-format-error))
+    '(error lyskom-error lyskom-format-error))
 (put 'lyskom-internal-error 'error-message
      "Internal LysKOM format error")
 
@@ -3287,10 +3287,11 @@ Other objects are converted correctly."
   
 (defun lyskom-prot-a-format-string (string)
   (let ((tmp (encode-coding-string string lyskom-server-coding-system)))
-    (format "%dH%s" (string-bytes tmp) tmp)))
+    (string-as-unibyte (format "%dH%s" (string-bytes tmp) tmp))))
 
 (defun lyskom-prot-a-format-raw-string (string)
-  (format "%dH%s" (string-bytes (cdr string)) (cdr string)))
+  (string-as-unibyte (format "%dH%s" (string-bytes (cdr string)) 
+			     (cdr string))))
 
 
 
diff --git a/src/services.el b/src/services.el
index b0aa158298ecf561e94f98b245a498f1959a1ac9..4517ad0602c8c83ecd7fba871a7f6fff0a0e579a 100644
--- a/src/services.el
+++ b/src/services.el
@@ -86,6 +86,8 @@ from being called in the wrong buffer."
          (set-buffer initiate-something-saved-buffer)))))
 
 (put 'lyskom-server-call 'lisp-indent-function 0)
+(put 'lyskom-server-call 'edebug-form-spec t)
+     
 
 ;;; ================================================================
 ;;;                     Requests for services
diff --git a/src/utilities.el b/src/utilities.el
index 3a533f8de853b51b8f7801bf5fa109e25c906a63..705e7763b5d051dbc9a12ba398d987f673c251e0 100644
--- a/src/utilities.el
+++ b/src/utilities.el
@@ -294,6 +294,24 @@ of \(current-time\)."
        (aset s2 l (lyskom-unicase-char (aref s2 l))))
      s2)))
 
+(defun lyskom-looking-at (s)
+  "Version of looking-at that will work in Gnu Emacs 20.3"
+  (save-excursion
+    (let ((start (point)))
+      (and (re-search-forward s nil t)
+	   (eq (match-beginning 0) start)))))
+
+;; Don't slow things down with our own looking-at unless we have to
+
+(eval-and-compile
+ (condition-case nil
+     (if (and (eq emacs-major-version 20)
+	      (eq emacs-minor-version 3))
+	 nil
+       (fset 'lyskom-looking-at (symbol-function 'looking-at)))
+   (error nil)))
+
+
 
 ;; Stolen from Gnu Emacs
 
@@ -867,12 +885,3 @@ Cannot be called from a callback."
                                    collector)
         (lyskom-wait-queue (or queue 'background))
         (car (collector->value collector)))))
-
-
-
-
-
-            
-
-          
-