diff --git a/src/build_system_wsmp.f90 b/src/build_system_wsmp.f90
index 26eb9d51f80f0f582b132511faca6da3d7d498d2..2b67ff752c998c00bb2443a119c9128185c06a73 100644
--- a/src/build_system_wsmp.f90
+++ b/src/build_system_wsmp.f90
@@ -189,14 +189,14 @@ do ileaves=1,osolve%nleaves
                         endif
                      enddo
                   enddo
-                  if (kfix(ileaves) < 1) then
-                    if (idof1 == 3) then
+                  if (idof1 == 3) then
+                    if (kfix((osolve%icon(k1,ileaves)-1)*ndof+idof1) < 1) then
                       iloc=ifind_loc_wsmp(i1loc,i1,ja,ia,n_iproc,nz_loc)
                       elem_dz=(osolve%icon(5,ileaves)-osolve%icon(1,ileaves))*params%vex
                       if (k1 < 5) then                        
-                        avals(iloc)=avals(iloc)-(params%dt*weightel(ileaves))/(2*elem_dz)
+                        avals(iloc)=avals(iloc)-(params%dt*weightel(ileaves))/(2.d0*elem_dz)
                       else
-                        avals(iloc)=avals(iloc)+(params%dt*weightel(ileaves))/(2*elem_dz)
+                        avals(iloc)=avals(iloc)+(params%dt*weightel(ileaves))/(2.d0*elem_dz)
                       endif
                     endif
                   endif