diff --git a/templates/index.html.ep b/templates/index.html.ep
index 409b158..dda695d 100644
--- a/templates/index.html.ep
+++ b/templates/index.html.ep
@@ -136,6 +136,22 @@
          return changeCharColor(str, heat, word);
        }
 
+       function toFixed(n, d) {
+         if(typeof n != "number") {
+           return n;
+         } else {
+           return n.toFixed(d);
+         }
+       }
+
+       function toExponential(n, d) {
+         if(typeof n != "number") {
+           return n;
+         } else {
+           return n.toExponential(d);
+         }
+       }
+
        % use Mojo::ByteStream 'b';
        var paraResults = <%= b(Mojo::JSON::to_json($lists)) %>;
        var urlprefix =  new URLSearchParams(window.location.search);
@@ -322,21 +338,21 @@
            "dom": '<"top">rt<"bottom"flp><"clear">',
            "columns": [
              //                      { "data": "pos", width: "7%", sClass: "dt-center mono compact", render: function ( data, type, row ) {return bitvec2window(data, row.heat, row.word) }},
-             { "data": "llr",  render: function ( data, type, row ) {return data.toFixed(0) }},
-             { "data": "pmi", render: function ( data, type, row ) {return data.toFixed(2) }},
-             { "data": "md", render: function ( data, type, row ) {return data.toFixed(2) }},
-             { "data": "lfmd", render: function ( data, type, row ) {return data.toFixed(2) }},
+             { "data": "llr",  render: function ( data, type, row ) {return toFixed(data, 0) }},
+             { "data": "pmi", render: function ( data, type, row ) {return toFixed(data, 2) }},
+             { "data": "md", render: function ( data, type, row ) {return toFixed(data, 2) }},
+             { "data": "lfmd", render: function ( data, type, row ) {return toFixed(data, 2) }},
              //             { "data": "fpmi", type: "scientific", render: function ( data, type, row ) {return data.toExponential(2) }  },
-             { "data": "npmi", render: function ( data, type, row ) {return data.toFixed(3) }},
-             { "data": "dice", render: function ( data, type, row ) {return data.toExponential(2) }},
-             { "data": "ld", render: function ( data, type, row ) {return data.toFixed(2) }},
-             { "data": "af", render: function ( data, type, row ) {return data.toFixed(2) }},
-             { "data": "delta", render: function ( data, type, row ) {return data.toFixed(2) }},
+             { "data": "npmi", render: function ( data, type, row ) {return toFixed(data, 3) }},
+             { "data": "dice", render: function ( data, type, row ) {return toExponential(data, 2) }},
+             { "data": "ld", render: function ( data, type, row ) {return toFixed(data, 2) }},
+             { "data": "af", render: function ( data, type, row ) {return toFixed(data, 2) }},
+             { "data": "delta", render: function ( data, type, row ) {return toFixed(data, 2) }},
              { "data": "afwin", width: "auto", sClass: "dt-center mono compact", render: function ( data, type, row ) {return bitmask2window(data, row.win) }},
-             { "data": "llfmd", render: function ( data, type, row ) {return data.toFixed(1) }},
-             { "data": "rlfmd", render: function ( data, type, row ) {return data.toFixed(1) }},
-             { "data": "lnpmi", render: function ( data, type, row ) {return data.toFixed(2) }},
-             { "data": "rnpmi", render: function ( data, type, row ) {return data.toFixed(2) }},
+             { "data": "llfmd", render: function ( data, type, row ) {return toFixed(data, 1) }},
+             { "data": "rlfmd", render: function ( data, type, row ) {return toFixed(data, 1) }},
+             { "data": "lnpmi", render: function ( data, type, row ) {return toFixed(data, 2) }},
+             { "data": "rnpmi", render: function ( data, type, row ) {return toFixed(data, 2) }},
              { "data": "f" },
              { "data": "word",  sClass: "collocator" }
            ],
diff --git a/w2v-server.pl b/w2v-server.pl
index 527c7ce..8bf0f14 100755
--- a/w2v-server.pl
+++ b/w2v-server.pl
@@ -125,6 +125,7 @@
   if(!$cccache{$word}) {
     $c->app->log->info("Getting classic collocates of $word.");
     $cccache{$word} = getClassicCollocators($word);
+    $cccache{$word} =~ s/:(-?)(nan|inf)/:"${1}${2}"/g;
   } else {
     $c->app->log->info("Getting classic collocates for $word from cache.");
   }
@@ -144,7 +145,7 @@
     }
     foreach my $i (@{$d1->{collocates}}) {
       my $w = $i->{word};
-      $i->{delta} = $i->{ld} - (defined $d2ld{$w} ? $d2ld{$w} : -5);
+      $i->{delta} = $i->{ld} - (defined $d2ld{$w} ? $d2ld{$w} : 0);
     }
     return(encode_json($d1));
   } else {
