   (save-excursion
     (back-to-indentation)
     (cond
-     ((looking-at comment-start-skip) (current-column))
+     ((and (bolp) (looking-at comment-start-skip)) (current-column))
      ((caml-in-comment-p)
       (let ((closing (looking-at "\\*)"))
             (comment-mark (looking-at "\\*")))


  (let ((start-literal (concat "[\"" caml-quote-char "]"))
        found kwop)
    (progn
      (while (and (not found)
                  (re-search-backward kwop-regexp nil t))
        (setq kwop (caml-match-string 0))
        (cond
         ((looking-at "(\\*")
          (backward-char))
         ((caml-in-comment-p)
          (search-backward "(" nil 'move))
         ((looking-at start-literal))
         ((caml-in-literal-p)
          (re-search-backward start-literal))  ;ugly hack
         ((setq found t)))))
    (if found
        (if (not (string-match "\\`[^|[]|[^]|]?\\'" kwop)) ;arrrrgh!!
            kwop

       ((not kwop) (setq done t))
       ((caml-at-sexp-close-p)
        (caml-find-paren-match (following-char)))
       ((or (string= kwop ";;")
            (and (string= kwop ";") (= (preceding-char) ?\;)))
        (forward-line 1)
        (setq kwop ";;")
        (setq done t))
       ((and (>= prio 2) (string= kwop "|")) (setq done t))
